美文网首页PHPPHP编程it互联网
PHP static:: - 后期绑定的注意事项

PHP static:: - 后期绑定的注意事项

作者: Kumiko | 来源:发表于2015-06-09 13:46 被阅读57次

    这里有一个重要的概念就是scope,如果子类没有overrided父类的属性或方法,那么那个属性或方法的scope就还是父类的。

    样例代码如下:

    <?php
    class A {
        public static $v;
        public static function setV($value) {static::$v = $value;}
        public static function setV2($value) {self::$v = $value;}
    }
    
    class B extends A{
        public static $v;
    };
    class C extends A{};
    class D extends B{};
    
    A::setV('a');
    C::setV('c');
    B::setV('b');
    var_dump(B::$v);
    var_dump(A::$v);
    var_dump(C::$v);
    var_dump(D::$v);
    
    // output:
    // string(1) "b"
    // string(1) "c"
    // string(1) "c"
    // string(1) "b"
    

    在这里,即使是用C::setV(),改变的还是A的属性。因为C的$v就是A的$v

    相关文章

      网友评论

        本文标题:PHP static:: - 后期绑定的注意事项

        本文链接:https://www.haomeiwen.com/subject/uuhjqttx.html