static (static) キーワードは、静的メソッドとプロパティを定義するために使用されます。また、静的変数と遅延静的バインディングを定義するためにも使用できます。
1、静的変数静的変数
静的変数はローカル関数スコープ内にのみ存在しますが、プログラムの実行がこのスコープを離れても、その値は失われません。つまり、次回この関数が実行されるときも、変数は元の値を覚えています。変数を静的として定義するには、変数の前に static キーワードを追加するだけです。
静的変数は、再帰関数を処理する方法も提供します。再帰関数は、それ自体を呼び出す関数です。再帰関数を作成するときは、無限に再帰する可能性があるので注意してください。再帰を終了する適切な方法があることを確認する必要があります。
この例では、 testing() 関数は各実行後に $a 変数の値を内部的に保存します。次回 testing() が呼び出されるとき、$a の値が復元され、testing() はこの値を 2 で乗算して出力します。変数の初期デフォルト値は 1 で、この割り当ては変数が初めて初期化されるときにのみ行われます。この操作は、関数の実行ごとに呼び出されることはありません。
2. クラスでの静的要素の使用
static キーワードには、クラス内で主に 2 つの用途があります。1 つは静的メンバーを定義すること、もう 1 つは静的メソッドを定義することです。クラスのプロパティまたはメソッドを static として宣言すると、クラスをインスタンス化せずに直接アクセスできるようになります。インスタンス化されたクラスのオブジェクトを介して静的プロパティにアクセスすることはできません (ただし、静的メソッドはアクセスできます)。 -> 演算子を使用してオブジェクトから静的プロパティにアクセスすることはできません。クラス内では、スコープ修飾演算子を使用して、スコープのさまざまなレベルの変数にアクセスできます。
2.1、静的プロパティ
静的メソッドではオブジェクトを呼び出す必要がないため、疑似変数 $this は静的メソッドでは使用できません。静的変数は、クラスのインスタンスではなく、クラス全体に属すると考えることができます。一般的なインスタンス変数とは異なり、静的プロパティは 1 つの変数値のみを保持し、この変数値はすべてのインスタンスに対して有効です。つまり、すべてのインスタンスがこのプロパティを共有します。
:$a . "n";}
コードをコピーします
コードは次のとおりです:
上記のコード例は、MyExtendObject の MyOtherMethod メソッドを正しく呼び出し、MyExtendObject から呼び出された出力を実行します [0.1 秒で完了]。
メソッドに $this 変数が含まれていない場合、このメソッドは静的メソッドである必要があります。クラスのインスタンスが必要ない場合は、インスタンス化の必要がない静的クラスも使用する必要があります。さらに、静的メソッドは特定のインスタンスに属さないため、$this 変数を静的メソッドで使用することはできません。
2.4、遅延バインディング
static:: を使用すると、 self:: とparent:: を使用する必要がなくなります。機能を実装する最終クラスを指定する場合は、static を使用できます。この修飾子は、コードが実行される直前に継承階層の最後のクラスのメンバーを計算します。このプロセスは遅延バインディングと呼ばれます。
3、概要
静的変数を作成し、デフォルトの初期化値を指定するには、static キーワードを使用します。静的変数は、関数が実行された後も値が変更されない変更された関数変数です。
static キーワードは、クラス内でプロパティやメソッドを変更するために使用することもできます。プロパティで使用すると、プロパティは特定のインスタンスの値を保持しなくなりますが、代わりにクラス全体の値を保持し、静的プロパティをメンバー間で共有できます。
静的メソッドにアクセスするには、スコープ修飾子と呼ばれる (::) を使用できます。この演算子の左側には、クラス名または事前定義されたスコープを指定できます。事前定義されたスコープには、selfparent static が含まれます。演算子の右側は静的メソッドと静的プロパティです。