PHP では、クラスのメソッド/変数にアクセスする方法が 2 つあります。
1. オブジェクト $object = new Class() を作成し、「->」を使用します。 " 呼び出し先: $object->attribute/function (変数/メソッドがアクセス可能である場合)。
2. 静的か非静的かに関係なく、クラスのメソッド/変数: class::attribute/function を直接呼び出します。ただし、前提条件があります:
A. 変数の場合、その変数にアクセスできる必要があります。
B. メソッドの場合、アクセス可能であることに加えて、次の条件も満たす必要があります。
b1) 静的メソッドの場合、特別な条件はありません。
b2) 非静的メソッドの場合。 、メソッド内で $this が使用されていない、つまり非静的変数/メソッドの呼び出しがないように変更する必要があります。もちろん、静的変数/メソッドの呼び出しには問題ありません。
次に、$object->… の使用と class::… の使用の違いを見てみましょう。
1. $object->… を使用するには、オブジェクトを作成するためにコンストラクターを実行する必要があります。
2. … 静的メソッド/変数を呼び出す場合、オブジェクトを作成するためにコンストラクターを実行する必要はありません。
3. 非静的メソッド/変数を呼び出すためにコンストラクターを実行する必要はありません。オブジェクトを作成します。
すると、2と3は同じなので、静的メソッド/変数の存在意義は何でしょうか?
次のような違いが明らかに存在します:
1. 静的変数
静的メンバーは 1 つの変数値のみを保持し、この変数値はすべてのインスタンスに対して有効です。つまり、すべてのインスタンスがこのメンバーを共有します。
2. 静的メソッド
静的メソッドは class::... を使用して直接呼び出すことができますが、非静的メソッドは、前に説明したように、 class::... メソッドを使用して呼び出す前に特定の制限を満たす必要があります