问答详情
源自:3-1 配置加载类(1)

core\lib\conf.php中的$conf和self::$conf有什么区别?

打印出来发现$conf为:Array
(
   [CTRL] => index
   [action] => index
)

self::$conf为:

Array
(
   [F:\Apache\htdocs\imooc\core\config\route.php] => Array
       (
           [CTRL] => index
           [action] => index
       )

)

产生区别的原因是什么?

提问者:创业通讯社 2016-10-02 22:01

个回答

  • 特立独行的zz
    2017-07-08 11:00:37

    $conf 是类方法里面定义的局部变量,self::$conf中的$conf是类中定义的静态属性,两者不可混淆。前者的作用域只在定义的方法里;后者是属于类的,可在对象之间共享,在类的内部访问静态元素要使用self关键字加两个冒号,在类外直接使用类名加两个冒号访问静态元素。

  • momomemo
    2017-01-28 17:51:30

    这个例子中的$conf 和 self::$conf,不是一个东西。只不过只看名字差不多。你把其中任意一个换下名字,就可以更直观的理解。

    看一下代码

    1)$conf = include $file; //这个$conf 存的是include返回的值。

    2)self::$conf[$file] = $conf;//这个self::$conf 存的是是在类里的变量。【它在类里定义的:static public $conf = array();

    如果换个区别很大的名字:

    1)$abc= include $file;

    2)self::$xyz[$file]=$abc;  【要在类里定义static public $xyz = array();】

    这样就不容易误会两个家伙有关系了=。=


  • 田心枫
    2016-10-04 20:45:02

    self是在类里面调用