自 PHP 5.3.0 起,PHP 增加了一个叫做后期静态绑定的功能,用于在继承范围内引用静态调用的类。用于在继承范围内引用静态调用的类,即在类的继承过程中,使用的类不再是当前类,而是调用的类。
下面介绍一个例子,具体原理和使用可参考 PHP手册 中里面详细介绍后期静态绑定。
Class A{ public static function create(){ $self = new self(); //所在位置的类的实例 $static = new static(); //调用类的实例 return array($self, $static); } } class B extends A{ } $arr = B::create(); var_dump($arr[0]); var_dump($arr[1]);
输出:
object(A)#3 (0) {} object(B)#4 (0) {}
与上述的输出结果相同,在实例化对象中,static会根据运行时候调用的类来决定实例化的对象,而self是根据所在位置的类来决定实例化对象
Laravel框架原理(一)--Laravel中常用的PHP语法
原文:https://www.cnblogs.com/slothccc/p/11671453.html