1

如果我在 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();

Var 的值是存储在 A::$var 还是 B::$var 中?

谢谢你。

4

2 回答 2

6

后期静态绑定是在 PHP 5.3 中引入的,它允许您控制这种行为。

于 2010-09-16T02:21:44.973 回答
3

很容易测试:

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'

...希望有帮助:)

于 2010-09-16T02:16:42.383 回答