この記事では主に php での静的変数の導入について紹介します。ある参考値があります。今からみんなに共有します。困っている友達は参考にしてください。
1 関数内の静的変数
のみ関数内で動作します。各呼び出しの後、静的変数の値は前の呼び出しに基づいて変更されます。定義時に初期値を代入すると、このステートメントは 1 回だけ実行されます。
例: getdata() 関数 static $c2 = 0 を何回呼び出しても、このステートメントは 1 回だけ実行されます
function getdata(){ static $c2 = 0;//初始化语句 $c2 = $c2 + 1; echo "$c2\n"; } getdata();//结果 1 getdata();//结果 2
2 静的クラス メンバー変数
1. クラスの静的メンバー変数はこのクラスにのみ属しますが、クラスのすべてのインスタンスはこの静的メンバー変数を共有します
2. 静的メンバー変数は次のことを行います。アクセスをインスタンス化する必要がなく、アクセス速度が速くなります。
例:
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 クラス メソッド
クラスの静的メソッドは、静的メンバー変数にのみアクセスできます。ただし、非静的メンバー変数は含まれません (Yes の場合、エラーが報告されます)
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 の静的変数
Trait の静的変数は、異なるクラスで使用されても相互に影響を与えません
For例:
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
以上がこの記事の全内容です。皆様の学習にお役に立てれば幸いです。その他の関連コンテンツについては、PHP 中国語 Web サイトをご覧ください。
関連する推奨事項:
以上がPHPの静的変数の紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。