我正在查看ZendCasts的教程,我想知道他使用的代码。
下面的简化版本class TestClass {
private $_var;
private static function getDefaultView() {
if (self::$_var === null) { ... } // this is the line in question
}
}
我想知道为什么不使用isset(self::$_var)
这样的东西?
当我使用self::
时,我需要$
符号来引用变量?我不能self::_var
吗?
==
与===
答案 0 :(得分:1)
这些是几个问题。
我想知道为什么像isset(self :: $ _ var)没有使用
这是无关紧要的。使用isset
的优点是,如果未定义变量,则不会发出通知。在这种情况下,始终定义self::$_var
,因为它是声明的(非动态)属性。如果变量为isset
,则null
也会返回false。
当我使用self ::我需要$符号来引用变量?
请注意,这不是常规变量,它是一个类属性(因此self
,它指的是方法的类)。是的,除非这是一个常数。 E.g:
class TestClass {
const VAR;
private static function foo() {
echo self::VAR;
}
}
如何==与===
不同
仅在此网站上已多次询问此事。
答案 1 :(得分:1)
答案 2 :(得分:1)
===
运算符表示“相同且相同类型”,因此不会发生自动类型转换。与0 == "0"
相同,但0 === "0"
不是。
self::$var
语法只是语法。使用$来引用变量,使用$来引用函数。
self::
语法用于静态访问(类变量,类方法,与this
所引用的实例变量相对应)。