依存関係注入と ::call メソッドのどちらが優れていますか?またその違いは何ですか?

WBOY
リリース: 2016-08-04 09:22:11
オリジナル
1661 人が閲覧しました

すみません、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が変更されたことに気づきましたか? ! ! !
つまり、開放と閉鎖の原則に違反します。
大体こんな感じですよ〜 ふふふ

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート