すみません、laravel はクラスのコンストラクターに __construct(User $user) を挿入することに依存しており、後続のメソッドはすべて $this->user で直接呼び出されます。 User::find() を直接使用することとの違いは何ですか。 ?どれがお勧めですか?
すみません、laravel はクラスのコンストラクターに __construct(User $user) を挿入することに依存しており、後続のメソッドはすべて $this->user で直接呼び出されます。 User::find() を直接使用することとの違いは何ですか。 ?どれがお勧めですか?
これは、php クラスの静的メソッドと動的メソッドの違いです。
静的メソッドは、クラスをインスタンス化せずに class::function
使用,但在声明的时候必须要有static
キーワードを直接渡すことができます。
動的メソッドは、クラスのインスタンス化を通じて呼び出す必要があります。
2 つの方法にどちらが良いか悪いということはありません。キーは使用するシナリオによって異なります。
一般に、論理相関があまり緊密でない場合は、静的メソッドを使用することをお勧めします。動的メソッドは実際には暗黙的なパラメーター $this
を渡す必要があるため、これはパフォーマンスにわずかな影響を与えます。
PHP はわかりませんが、「実装ではなくインターフェイスに依存する」というのはプログラミングの分野における基本的な考え方です。
しかし、インターフェイスは実際のオブジェクトではありません。これを呼び出すには、すべてのインジェクションを物理的に 1 か所に集める必要があります。このように、クラスの実装を変更する場合は、1 か所を変更するだけで済みます。
リーリー
将来ビジネスに変更がある場合は、
GoodUser extends User {} を使用してください
コードを変更する必要があります
クラスBが変更されたことに気づきましたか? ! ! !
つまり、開放と閉鎖の原則に違反します。
大体こんな感じですよ〜 ふふふ