This article describes the differences between the static keyword and the self keyword in PHP. This article describes the definition of the static keyword, LateStaticBindings, and the differences between the static keyword and the self keyword, for more information about php object-oriented programming
class test{ public static function test(){ self::func(); static::func(); } public static function func(){}}
But do you know the difference between self and static?
In fact, the difference is very simple. you only need to write a few demos to understand:
Demo for self:
class Car{ public static function model(){ self::getModel(); } protected static function getModel(){ echo "This is a car model"; }}
Car: model ();
Class Taxi extends Car{ protected static function getModel(){ echo "This is a Taxi model"; }}
Taxi: model ();
Get output
This is a car modelThis is a car model
We can find that self still calls the method of the parent class in the subclass.
Demo for static
class Car{ public static function model(){ static::getModel(); } protected static function getModel(){ echo "This is a car model"; }}Car::model();Class Taxi extends Car{ protected static function getModel(){ echo "This is a Taxi model"; }}Taxi::model();
Get output
This is a car modelThis is a Taxi model
As you can see, when static is called, even if the subclass calls the method of the parent class, the method called in the parent class method will also be the method of the child class (this is a good detour ..)
Before PHP5.3, there was a difference between static and self. what is it? after all, it is a 7 version. I don't know.
In summary, self can only reference methods in the current class, while the static keyword allows the function to dynamically bind methods in the class at runtime.