博客列表 >延迟静态绑定static

延迟静态绑定static

庆选的博客
庆选的博客原创
2019年10月16日 18:37:51707浏览

总结:

第一点静态,也就是说这个功能只适用于静态属性或静态方法。
第二点延迟绑定

//静态继承的上下文环境中, 调用被子类重写的静态方法,使用关键字static, 代替掉self

实例

class A{
    static $name = "父类";
    public function printName(){
        echo self::$name."\n";
        self::fun();
    }
    static function fun(){
        echo "A Class\n";
    }
}
class B extends A{
    static $name = "子类";
    static function fun(){
        echo "B Class\n";
    }
}
$obj = new B();
$obj->printName();
// 输出结果
// 父类
// A Class

运行实例 »

点击 "运行实例" 按钮查看在线实例

实例

class A{
    static $name = "父类";
    public function printName(){
        echo static::$name."\n";
        static::fun();
    }
    static function fun(){
        echo "A Class\n";
    }
}
class B extends A{
    static $name = "子类";
    static function fun(){
        echo "B Class\n";
    }
}
$obj = new B();
$obj->printName();
// 输出结果
// 子类
// B Class

运行实例 »

点击 "运行实例" 按钮查看在线实例


总结:

后期静态绑定本想通过引入一个新的关键字表示运行时最初调用的类来绕过限制。简单地说,这个关键字能够让你在上述例子中调用 test() 时引用的类是 B 而不是 A。最终决定不引入新的关键字,而是使用已经预留的 static 关键字。

实例:

大家可以在项目中自行挖掘使用场景,比如一个会员父类  class Vip
下面两个子类分别是 超级会员 svip 和 年费会员 yvip
可以在两个子类中分别重写 static usergroup() 方法 或者其他静态属性 ,父类中使用延迟静态绑定


声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议