phpのメンバーvariablesは宣言時に初期化できますが、スカラーでのみ初期化できます。
class A { public $f1 = 'xxxx'; static public $f2 = 100; }
変数をオブジェクトに割り当てたい場合、変数はコンストラクターでのみ初期化できます。例:
class A { private $child; public function construct() { $this->child = new B(); } }
しかし、phpにはstaticconstructはありません。 Java の
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の関連知識を紹介します。静的メンバー変数。優れた参照値があります
静的メンバー: 静的クラスのメンバーは、静的修飾子を追加することで静的メンバーになります。静的メンバーはメモリ内に存在するため、クラス名 + 静的メンバー名を使用してこの静的メンバーに直接アクセスできます。 -static members メモリはインスタンス化後にのみ割り当てられるため、静的メンバーは非静的メンバーにアクセスできません。静的メンバーはメモリ内に存在するため、非静的メンバーはクラス内の静的メンバーに直接アクセスできます。
1. 静的グローバル変数
1. : グローバル変数の前にキーワード static を追加すると、変数は静的グローバル変数として定義されます。
特徴:
A. この変数はグローバルデータ領域にメモリを割り当てます。
B. 初期化: 明示的に初期化されていない場合、暗黙的に 0 に初期化されます (明示的に初期化されない限り、自動変数はランダムです)。
C. Access 変数はソース ファイル内でのみ表示され、定義の時点からこのファイル内で終了する必要があります。
2. 静的ローカル変数
特徴:
A. この変数はグローバルデータ領域にメモリを割り当てます。
B. 初期化: 明示的に初期化されない場合、暗黙的に 0 に初期化され、後続の関数呼び出しは初期化されなくなります。
C. プログラムの終了まで常にグローバルデータ領域に存在します。ただし、そのスコープはローカル スコープであり、それを定義する関数またはステートメント ブロックが終了すると、そのスコープも終了します。
静的データ メンバーは、通常のデータ メンバーと同じパブリック、プロテクト、およびプライベートのアクセス ルールに従います。
静的データ メンバーはグローバル データ領域にメモリを割り当て、このクラスに属するすべてのオブジェクトによって共有されるため、このクラスには属しません。スコープは、クラス オブジェクトが生成されていないとき、つまりクラスのインスタンスが生成されていないとき、それを操作できます。静的データ メンバーの初期化は、一般的なデータ メンバーの初期化とは異なります。静的データ メンバーの初期化の形式は次のとおりです:
データ型>::=
クラスの静的データ メンバーには 2 つのアクセス形式があります:
静的データメンバーのアクセス権が許可されている場合(つまりパブリックメンバー)、上記の形式を使用できますプログラム内で
参照静的データ メンバー; 静的データ メンバーは、主に各オブジェクトが同じ
属性🎜を持つ場合に使用されます。たとえば、預金クラスの場合、各インスタンスの金利は同じです。したがって、金利は預金クラスの静的データ メンバーとして設定する必要があります。これには 2 つの利点があります。まず、定義されているデポジット クラス オブジェクトの数に関係なく、すべてのインタレスト データ メンバーがグローバル データ領域に割り当てられたメモリを共有するため、ストレージ スペースが節約されます。第二に、利息を変更する必要がある場合、一度変更する限り、すべての預金オブジェクトの利息が変更されます。以上がphpの静的変数の初期化例を詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。