本文主要是介绍php之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,4
Stu::t2(); // 嘤嘤,16,2
这篇关于php之static后期绑定/延迟绑定的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!