我一直看到这个问题很多,我认为它已经与后期的静态绑定有关,但是这样做是什么意思。
class {
public static $name = array();
function something() {
static::$name;
}
}
结束
class {
public static $name = array();
function something() {
self::$name;
}
}
答案 0 :(得分:2)
self::$name
将始终引用父类的属性,而父类中的static::$name
将引用运行时类的属性。
例如
class A
{
protected static $foo = 'foo';
public static function getSelfFoo()
{
return self::$foo;
}
public static function getStaticFoo()
{
return static::$foo;
}
}
class B extends A
{
protected static $foo = 'bar';
}
echo A::getSelfFoo(); // 'foo'
echo A::getStaticFoo(); // 'foo'
echo B::getSelfFoo(); // 'foo'
echo B::getStaticFoo(); // 'bar'
答案 1 :(得分:0)
如果您创建类的子类,这很重要。在第一个示例中,something
函数将引用子类上的$name
变量。在第二个示例中,它将引用基类上的$name
变量。