What is the difference between self::$bar and static::$bar in PHP?
本问题已经有最佳答案,请猛点这里访问。
Possible Duplicate:
New self vs. new static
在下面的示例中,使用
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | class Foo { protected static $bar = 1234; public static function instance() { echo self::$bar; echo" "; echo static::$bar; } } Foo::instance(); |
生产
1 2 | 1234 1234 |
当使用
因此,如果你试图在你的
1 2 3 4 5 6 7 8 9 | class Foo { protected static $bar = 1234; } class Bar extends Foo { protected static $bar = 4321; } |
当您使用
在上述场景中,使用
通常对方法甚至类本身使用后期静态绑定,而不是属性,因为您不经常在子类中重新声明属性;在这个相关问题中可以找到使用
但是,这并不排除使用具有属性的
1 2 3 | self - refers to the same class whose method the new operation takes place in. static - in PHP 5.3's late static binding refers to whatever class in the hierarchy which you call the method on. |
在下面的示例中(请参见get_called_class()),类B继承了类A中的两个方法。self绑定到a,因为它是在a的方法实现中定义的,而static绑定到被调用的类,尽管它也在a的方法实现中。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |