php之static后期绑定/延迟绑定

来源:互联网 发布:皇室战争电磁炮数据 编辑:程序博客网 时间:2024/04/30 10:44

  • 引出问题
  • 延迟绑定再复习
    • 知识点

引出问题

static延迟绑定

class Human {    public static function whoami() {        echo '来自父类的whoami在执行<br />';    }    public static function say() {        self::whoami(); // 子类内没有say方法,找到了父类这里                        // 在这里的self 指的是 父类    }    public static function say2() {        static::whoami();    //  子类也没有say2方法,又找到父类这里                             // 但是父类用static::whoami,                             // 指调用你子类自己的whoami方法    }}class Stu extends Human{    public static function whoami () {        echo '来自子类的whoami在执行<br />';    }}Stu::say();Stu::say2();说明:如果子类也没有whoami()方法,则say2()最后调用的也是父类

延迟绑定再复习

知识点

类常量/静态属性/方法 –> 都是存放在类空间的
类常量用 const来定义

延迟绑定:
是指类的计算self的定义不是以定义时为准,而是以运行时的计算结果为准.

class Animal {    const age = 1;    public static $leg = 4;    public static function cry() {        echo '呜呜<br />';    }    public static function t1() {        self::cry();        echo self::age,'<br />';        echo self::$leg,'<br />';    }    public static function t2() {        static::cry();        echo static::age,'<br />';        echo static::$leg,'<br />';    }}class Human extends Animal {    public static $leg = 2;    public static function cry() {        echo '哇哇<br />';    }}class Stu extends Human {    const age = 16;    public static function cry() {        echo '嘤嘤<br />';    }}Stu::t1(); //呜呜,1,4Stu::t2(); // 嘤嘤,16,2
0 0