検索

ホームページ  >  に質問  >  本文

thinkphp - php面向对象的问题

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

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);
……
巴扎黑巴扎黑2812日前624

全員に返信(5)返信します

  • 阿神

    阿神2017-04-11 09:03:46

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

    返事
    0
  • 怪我咯

    怪我咯2017-04-11 09:03:46

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

    返事
    0
  • 迷茫

    迷茫2017-04-11 09:03:46

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

    返事
    0
  • 大家讲道理

    大家讲道理2017-04-11 09:03:46

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

    返事
    0
  • ringa_lee

    ringa_lee2017-04-11 09:03:46

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

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

    返事
    0
  • キャンセル返事