帮助static :: $ value

时间:2011-05-04 06:40:45

标签: php static php-5.3

我一直看到这个问题很多,我认为它已经与后期的静态绑定有关,但是这样做是什么意思。

class {
    public static $name = array();

    function something() {
        static::$name;
    }
}

结束

class {
    public static $name = array();

    function something() {
        self::$name;
    }
}

2 个答案:

答案 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变量。