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