As we all know, the purpose of OOP is to make reasonable use of each work by writing code one by one, copying and copying, inheriting and inheriting, and at the same time, it also facilitates code management. If something goes wrong in any link, go to that link. But sometimes the class we write turns out to be only used once and does not generate multiple instances. Going to new at this time will not only affect efficiency, but also the code will not be concise enough.
So the very emotional php provides us with a convenient and efficient method of static. With it, these are no longer problems.
Now I will tell you about the usage and characteristics of static.
class hw{ public static function hi(){ return 'Hello World!!!'; } } echo hw::hi();
class hw{ public function hi(){ return 'Hello World!!!'; } } echo hw::hi();
As can be seen from the above example, after using static or not using the static attribute, you can directly use the :: method to call directly from the outside. However, for the sake of efficiency and other factors, it is still recommended to use static to limit it.
class foo{ private static function c(){ return 'abcd'; } public static function a(){ echo self::c(); } } foo::a();
If the static keyword is used to restrict the method, it must use self:: to be referenced within this class. The above example has made it very clear.
class foo{ public static $a; public static function a(){ self::$a='abcd'; } } foo::a(); echo foo::$a;
We can also use the static keyword to limit variables. At this time, the variable will not always maintain the value of the last negative value.
class foo{ public static $a; public static function a(){ return 'abcd'; } } class oo extends foo{ public static function a(){ echo '1234'; } } oo::a();
Static inheritance is the same as the inheritance method of ordinary classes, and there is not much difference.
class foo{ public static $a; public static function a(){ return 'abcd'; } } class oo extends foo{ public static function aa(){ echo parent::a(); } } oo::aa();
There is only a writing difference when using it. It must be the parent:: method to reference the parent class method, and you cannot directly use self:: to use the parent class method. In the following example, no value will be displayed:
class foo{ public static $a; public static function a(){ return 'abcd'; } } class oo extends foo{ public static function aa(){ echo self::a(); } } oo::a();
Another simple example
<?php class Status { public static $ICE = -1; public static $WATER = 0; public static $VAPOR = 1; } ?>? <?php $exStatus = Status::$ICE; if ($exStatus == Status::$ICE) echo "Ice"; else echo "Water"; ?>