打印出来发现$conf为:Array
(
[CTRL] => index
[action] => index
)
self::$conf为:
Array
(
[F:\Apache\htdocs\imooc\core\config\route.php] => Array
(
[CTRL] => index
[action] => index
)
)
产生区别的原因是什么?
$conf 是类方法里面定义的局部变量,self::$conf中的$conf是类中定义的静态属性,两者不可混淆。前者的作用域只在定义的方法里;后者是属于类的,可在对象之间共享,在类的内部访问静态元素要使用self关键字加两个冒号,在类外直接使用类名加两个冒号访问静态元素。
这个例子中的$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();】
这样就不容易误会两个家伙有关系了=。=
self是在类里面调用