静的変数は関数スコープ内にのみ存在します。つまり、静的変数はスタック上にのみ存在します。一般に、関数内の変数 (ローカル変数など) は関数の終了後に解放されますが、静的変数は解放されません。つまり、変数の値は次回この関数が呼び出されたときに保持されます。
変数の前にキーワード static を追加する限り、変数は静的変数になります。
<?php function test() { static $nm = 1; $nm = $nm * 2; print $nm."<br />"; } // 第一次执行,$nm = 2 test(); // 第一次执行,$nm = 4 test(); // 第一次执行,$nm = 8 test(); ?>
プログラムの実行結果:
2
4
8
関数test()の実行後、変数$nmの値が保存されます。
静的プロパティは、静的メンバーや静的メソッドなどのクラスでよく使用されます。
プログラム リスト: クラスの静的メンバー
静的変数 $nm は、クラスのインスタンスではなく、クラス nowamagic に属します。この変数はすべてのインスタンスに対して有効です。
:: はスコープ制限演算子です。$this スコープの代わりに self スコープが使用されます。$this スコープはクラスの現在のインスタンスのみを表し、self:: はクラス自体を表します。
ソースを見る
print?
<?php class nowamagic { public static $nm = 1; function nmMethod() { self::$nm += 2; echo self::$nm . '<br />'; } } $nmInstance1 = new nowamagic(); $nmInstance1 -> nmMethod(); $nmInstance2 = new nowamagic(); $nmInstance2 -> nmMethod(); ?>
プログラムの実行結果:
3
5