This article mainly introduces the introduction of static variables in php. It has certain reference value. Now I share it with everyone. Friends in need can refer to it
1 Static variables in functions
Only Acts inside the function. After each call, the value of the static variable will change based on the previous call. When defining, if an initial value is assigned, this statement will only be executed once
For example: No matter how many times getdata() function static $c2 = 0 is called; this statement will only be executed once
function getdata(){ static $c2 = 0;//初始化语句 $c2 = $c2 + 1; echo "$c2\n"; } getdata();//结果 1 getdata();//结果 2
2 static class member variables
1. The static member variables of the class only belong to this class, but all instances of the class share this static member variable
2. Static member variables do not need to be instantiated Access, and the access speed is faster
For example:
class C1 { //use Counter; static $c2=1; public function inc() { static $c; $c = $c + 1; echo "$c\n"; } } $o = new C1(); $o->inc(); // echo 1 $p = new C1(); $p->inc(); // echo 2 echo' '; $p::$c2=5; echo C1::$c2;//echo 5 静态成员变量不需要实例化就能访问,且访问速度快一些 echo' '; echo $p::$c2;//echo 5 echo' '; echo $o::$c2;//echo 5
1.static class method
The static method of the class can only access static member variables, but not non-static member variables (if Yes, an error will be reported)
class C3 { //use Counter; public static $c3=1; public $c5 =5; public static function inc1() { echo C3::$c3;// } public static function inc2() { echo $this->c5; //会报错 $this不允许出现在静态方法中 } } C3::inc1();// echo 1 C3::inc2(); //Fatal error: Uncaught Error: Using $this when not in object context
2. Trait’s static variables
Trait’s static variables have no influence on each other when used by different classes
For example:
trait Counter { public function inc() { static $c = 0; $c = $c + 1; echo "$c\n"; } } class C1 { use Counter; } class C2 { use Counter; } $o = new C1(); $o->inc(); // echo 1 $o->inc(); // echo 2 $b = new C1(); $b->inc(); // echo 3 $b->inc(); // echo 4 $p = new C2(); $p->inc(); // echo 1 $p->inc(); // echo 2
The above is the entire content of this article. I hope it will be helpful to everyone's study. For more related content, please pay attention to the PHP Chinese website!
Related recommendations:
Implementation of PHP background comments
How PHP verifies the legality of IP
How to implement simulated multiple inheritance in php
The above is the detailed content of Introduction to static variables in php. For more information, please follow other related articles on the PHP Chinese website!