クラス内でメソッドを呼び出す次の 2 つの方法の違いは何ですか?
1
リーリー2
リーリー1 つは最初にインスタンス化してから呼び出す方法、もう 1 つは静的メソッドを直接宣言して直接呼び出す方法です。これら 2 つの違いは何ですか?どのような状況で使用する必要がありますか?
クラス内でメソッドを呼び出す次の 2 つの方法の違いは何ですか?
1
リーリー2
リーリー1 つは最初にインスタンス化してから呼び出す方法、もう 1 つは静的メソッドを直接宣言して直接呼び出す方法です。これら 2 つの違いは何ですか?どのような状況で使用する必要がありますか?
一般的な理解は次のとおりです:
最初のメソッドは、$this->a; self::$a; static::$a; $this->a(); self::a(); static::a()
および他のメソッドを使用して現在のクラスの関連データとメソッドを取得するために使用できます
2 番目のメソッドは、self::$a; static::$a; self::a(); static::a()
および現在のクラスの関連する静的データと静的メソッドを取得する他のメソッドのみを使用できます
static
現在のオブジェクトがインスタンス化されていないため、これを内部で使用することはできません。
オブジェクトに a) ユーティリティ メソッドがあり、b) オブジェクトのインスタンスに依存しない場合は、静的メソッドが最適です。
しかし、実際の開発では、a) の比重が高くなります。つまり、実際に広く使用されているツールメソッドの場合、可能であれば、開発者はさまざまなメソッドを使用してそれを静的にすることができます。 リーリー
呼び出し時に数行のコードを節約するためです。良いか悪いかは関係なく、状況次第です。さらに、静的メソッドもシングルトン モード オブジェクトでよく見られます。根本的な原因は上記と同じであるため、詳細は説明しません。