静的静的変数とは何ですか?
静的変数 型指定子は静的です。 静的変数は静的ストレージに属し、その記憶領域はメモリ内の静的データ領域です (記憶ユニットは静的記憶領域に割り当てられます)。この領域のデータは、プログラムの実行中 (実行中)、これらの記憶領域を占有します。 (プログラム全体) は実行中に解放されません)、そのメモリアドレスはプログラム全体が終了するまで変化しないと考えることもできます (逆に、auto 自動変数、つまり動的ローカル変数は動的ストレージに属します)カテゴリに追加され、動的ストレージ領域を占有します。関数呼び出しはすぐに終了します)。静的変数はプログラムの実行中に常に存在しますが、その範囲外では使用できません。
また、静的保存メソッドに属する変数は必ずしも静的変数であるとは限りません。 例: 外部変数 (PHP ではグローバル変数と呼ばれます) は静的ストレージ メソッドですが、静的外部変数または静的グローバル変数になる前に、必ずしも静的変数である必要はありません。 すべてのグローバル変数は静的変数であり、ローカル変数は、型修飾子 static を使用して定義されている場合にのみローカル静的変数です。 静的変数はどこにでも適用できます。アプリケーションが成功すると、他の同じアプリケーションは受け入れられなくなります。 静的変数は、値を変更できないという意味ではありません。値を変更できない量は、定数と呼ばれます。 保持する値は変更可能であり、最新の状態を保ちます。関数が呼び出されて終了しても変化しないため、静的であると言われます。つまり、最後に関数を呼び出したときに静的変数に特定の値を割り当てた場合、その値は次回関数が呼び出されたときも変更されません。 php
のメンバーvariablesは、宣言と同時に初期化できますが、スカラーでのみ初期化できます。 例:
class A { public $f1 = 'xxxx'; static public $f2 = 100; }変数をオブジェクトに割り当てたい場合、変数はコンストラクターでのみ初期化できます。例:
class A {
private $child;
public function construct() {
$this->child = new B();
}
}
しかし、phpには
static
static device/static ブロックと同様に、初期化する適切なタイミングがありません。
共有メンバーの問題を解決するには、次のような方法があります。
class A { static public $child; } A::$child = new B();プライベートメンバーに対するクリーンな方法はないようです。これを行うしかありません:
class A { static private $child; static public initialize() { self::$child = new B(); } } A::initialize();
以上がPHPの静的変数の初期化コード例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。