php delayed static binding: refers to the self of the class, which is not based on the time of definition, but based on the running results during calculation.
(1) When the subclass instantiated object $stu calls the say method, it runs in the parent class Human, so self::hei() in say() is the hei() of the parent class. )method.
(2) static::method name(): If you use the static keyword, you will first search for the method in the subclass; if not found, search it in the parent class.
Usage scenarios
First observe the following code:
##
abstract class base { //do sth } class aClass extends base{ public static function create(){ return new aClass(); } } class bClass extends base{ public static function create(){ return new bClass(); } } var_dump(aClass::create()); var_dump(bClass::create());
object(aClass)#1 (0) { } object(bClass)#1 (0) { }
abstract class base { public static function create(){ return new self(); } } class aClass extends base{ } class bClass extends base{ } var_dump(aClass::create()); var_dump(bClass::create());
abstract class base { public static function create(){ return new static(); } } class aClass extends base{ } class bClass extends base{ } var_dump(aClass::create()); var_dump(bClass::create());
object(aClass)#1 (0) { } object(bClass)#1 (0) { }
The above is the detailed content of What is php delayed static binding? Detailed explanation of delayed static binding example code. For more information, please follow other related articles on the PHP Chinese website!