投稿

ラベル(静的プロパティ)が付いた投稿を表示しています

[PHP] static修飾子について

static修飾子を使った静的変数、静的プロパティ、静的メソッドについてです。 静的変数 関数内で定義された変数のスコープはローカルスコープと言い、呼び出し元のスコープや外部のスコープからは参照できず、関数が終了したら値ごと破棄されます。 しかし、変数を静的変数で定義することで、変数の値を関数終了後も値を維持しておくことが可能です。 定義 static 変数; [実装例] 通常の変数定義 コード 以下のコードは通常の変数定義です。 function counter() { $var = 0; $var++; return $var; } $count = counter(); print "count={$count}\n"; $count = counter(); print "count={$count}\n"; $count = counter(); print "count={$count}\n"; 実行結果 ローカル変数 $var の値は counter関数が終了するたび破棄されるので、何度呼び出しても結果は変わりません。 $ php test_static.php count=1 count=1 count=1 [実装例] 静的変数での変数定義 コード 以下のコードは変数 $var を、静的変数で定義した例です。 function counter() { static $var = 0; $var++; return $var; } $count = counter(); print "count={$count}\n"; $count = counter(); print "count={$count}\n"; $count = counter(); print "count={$count}\n"; 実行結果 $var の値はcounter関数の終了後も保持されているのが分かります。 $ php test_static.php count=1 count=2 count=3 静的プロパティ クラスのプロパティをst