古庄親方の上級試験コラム#006 「言語リファレンス > 変数のスコープ」

http://php.net/manual/ja/language.variables.scope.php

「変数がアクセスできる範囲」の事を スコープ と言います。
PHPは「local」と「global」の2つのスコープを持ちます。
ユーザー定義の関数(メソッド)の中で宣言された変数はlocal、関数(メソッド)の外側で宣言された変数はglobalとなります。
PHPでは原則として、localスコープ内ではlocalの変数のみ、globalスコープではglobalの変数のみ、アクセスできます。

ただし、関数(メソッド)内でglobalスコープの変数を扱う方法が2つあります。
一つはglobalキーワード、もう一つが$GLOBALSスーパーグローバル変数になります。

global変数の寿命は、(意図的にunsetしたりしない限り)プログラムが終了するまでとなりますが、local変数は「その関数から抜けた」瞬間に破棄されます。
しかし、static変数を使う事で「関数(メソッド)を抜け出した後も値を保持し続ける」事ができるようになります。

継承されたメソッドのstatic変数を使う場合、PHP 8.1より古いバージョンでは「別々の変数」として扱われますが、PHP 8.1以降は 親クラスのメソッドとstatic 変数を共有するようになりました。

このコラムに関連するコードはこちらになります
https://github.com/php-engineer-examination/php8_column_expert/blob/main/src/006.php

この記事が気に入ったら
いいね または フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次