代码之家  ›  专栏  ›  技术社区  ›  Jason

如果我在PHP中扩展一个静态类,并且父类引用“self::”,那么这会引用扩展类中的self吗?

  •  1
  • Jason  · 技术社区  · 14 年前

    如果我在PHP中扩展一个静态类,并且父类引用“self::”,那么这会引用扩展类中的self吗?

    <?php 
    Class A
    {
        static $var  
        public static function guess(){self::$var = rand(); return $var}
    }        
    
    Class B extends Class A
    {
        public static function getVar(){return self::$var}
    }
    

    B::guess(); 然后B::getVar();

    非常感谢。

    2 回复  |  直到 14 年前
        1
  •  3
  •   Dagg Nabbit    14 年前

    很容易测试:

    class ClassA {
        public static function test(){ self::getVar(); }
        public static function getVar(){ echo 'A'; }
    }        
    
    class ClassB extends ClassA {
        public static function getVar(){ echo 'B'; }
    }
    
    ClassA::test(); // prints 'A'
    
    ClassB::test(); // also prints 'A'
    

    ... 希望有帮助:)

        2
  •  6
  •   deceze    14 年前

    Late static binding 是在PHP5.3中引入的,它允许您控制这种行为。