Heim >Backend-Entwicklung >PHP-Tutorial >thinkphp面向对象的问题

thinkphp面向对象的问题

WBOY
WBOYOriginal
2016-07-06 13:51:271162Durchsuche

TP框架分页类里面 一开始的时候我看那里定义了一个私有属性private $url     = '';
我看下面有两个地方用到了这个私有属性 
这个私有方法在这个show方法的上面  运行到这个私有方法时 $url这个属性是空的啊 不会报错吗?

<code>private function url($page){
        return str_replace(urlencode('[PAGE]'), $page, $this->url);
    }

public function show() {
        if(0 == $this->totalRows) return '';
        $this->parameter[$this->p] = '[PAGE]';
        $this->url = U(ACTION_NAME, $this->parameter);
……</code>

回复内容:

TP框架分页类里面 一开始的时候我看那里定义了一个私有属性private $url     = '';
我看下面有两个地方用到了这个私有属性 
这个私有方法在这个show方法的上面  运行到这个私有方法时 $url这个属性是空的啊 不会报错吗?

<code>private function url($page){
        return str_replace(urlencode('[PAGE]'), $page, $this->url);
    }

public function show() {
        if(0 == $this->totalRows) return '';
        $this->parameter[$this->p] = '[PAGE]';
        $this->url = U(ACTION_NAME, $this->parameter);
……</code>

你确定你了解编程吗?
所有的函数存在定义和调用两个过程,你看到的是两个定义的过程。
定义过程中存在的对变量的使用并不是真的就使用了变量,使用变量是在调用的过程中。
所以定义的顺序并不影响变量的值,又何来上面和下面之分。

str_replace 函数的描述上有句:该函数是二进制安全的。
二进制安全,在我理解上来说对输入任何字节都能正确处理, 即使包含零值字节.题主也可以搜下二进制安全这个概念

你的url到底是私有属性还是私有方法?

$this->url这个私有属性在你的show方法里面定义了,不会是空的

这回答都是啥啊。。。晕,是程序员吗?

首先他是类,你调用的也不是静态函数,所以url在创建类实例的时候就初始化了,他就是'',空的字符串,不是没有定义,是定义了但是是空的。所以不会有报错。

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn