php 延迟静态绑定
延迟静态绑定 (Late Static Binding)是PHP5.3引入的一个功能,用于解决类继承中静态方法调用的问题。它允许在类继承的上下文中正确引用被覆写的方法或属,同时支持静态环境。通过静态(static):关键字,PHP可以在运行时决定调用的是哪一个类的方法或属性,而不是在编译时就确定。
例如:
class ParentClass
{
public static function getClassName()
{
return static::class;
}
}
class ChildClass extends ParentClass
{
}
echo ChildClass::getClassName();//输出 "ChildClass"
在这个例子中,调用ChildClass::getClassName()会返回ChildClass,这是因为使用了static::关键字进行静态绑定。如果改用 self::关键字,则会返回 ParentClass,因为self::是在编译时绑定的。
与self::的区别:
class Base
{
public static function who()
{
echo '爸爸';
}
public static function test()
{
self::who();//父类自己的
static::who();//子类的
}
}
class Child extends Base
{
public static function who()
{
echo '儿子';
}
}
Child::test();//输出 "爸爸儿子"
延迟静态绑定灵活性、扩展性比较高,通过不修改父类的情况下,通过子类实现不用的行为。
本文来自博客园,作者:Carvers,转载请注明原文链接:https://www.cnblogs.com/carver/articles/18901959

浙公网安备 33010602011771号