2011-02-23 54 views
0

下面的代码输出在A类中设置的'x',我将如何在不改变B类的情况下输出“在B类中设置的x”?在这种情况下后期静态绑定如何工作?

<?php 

class A 
{ 
    public static $x = 'x as set in class A'; 

    public static function getX() 
    { 
     return self::$x; 
    } 
} 


class B extends A 
{ 
    public static $x = 'x as set in class B'; 
} 


echo B::getX(); 
+0

可只是为了记录在案,这是不是我问。 – 2011-07-04 14:54:13

回答

2

self总是指类,在那里它被定义。你正在寻找的是“晚静态绑定”(正如你已经建议,但不使用)。代码块中的static关键字指的是“实际”类,意思是:被调用类(XY::method())或调用对象的类($x->method())。

return static::$x; 

属性声明中的static关键字与LSB没有任何关系。这只是对类属性的通用声明。

注意,即LSB是不是在PHP 5.3 <

+0

Ahhhh非常感谢。真棒回复 – 2011-02-23 12:34:25

相关问题