您必须问自己:“我要使用适当的方法来解决问题吗?”
self::并
static::做两件事。例如
self::或是
__CLASS__对当前类的引用,因此在一定范围内进行定义将无法满足对静态调用的需求。
继承会发生什么?
class A { public static function className(){ echo __CLASS__; } public static function test(){ self::className(); }}class B extends A{ public static function className(){ echo __CLASS__; }}B::test();这将打印
A
另一方面,
static::它具有预期的行为
class A { public static function className(){ echo __CLASS__; } public static function test(){ static::className(); }}class B extends A{ public static function className(){ echo __CLASS__; }}B::test();这将打印
B
在PHP 5.3.0中,这称为 后期静态绑定 。它解决了调用 在运行时引用 的类的限制。
考虑到这一点,我认为您现在可以充分看到并解决问题了。如果您要继承几个静态成员,并且需要访问父成员和子成员,
self::则将无法满足要求。



