ホームページ  >  に質問  >  本文

Laravel でのインターフェイス/コントラクトの使用方法の詳細な探索

PHP/Laravel の知識を増やそうとしているので、新しい機能を作成するときはインターフェイスを扱うようにしています。

状況を設定するには: 私たちの会社は 1 年間で口座振替プロバイダーを数回変更しました。そのため、将来の変更をより「足場」にするためにこのインターフェイスを作成したいと思いました。

私のコード構造:

アプリケーション\インターフェイス\DirectDebitインターフェイス

リーリー

アプリケーション\サービス\DirectDebit\クライアント\ボトムライン

リーリー

アプリ\プロバイダー\AppServiceProvider @register

リーリー

現在の使用法は有効ですが、正しくないと感じます。getAccount() メソッドを使用したテスト エンドポイントを次に示します。

リーリー

最初の質問は、クラスの変数設定でインターフェイスを使用している人を見たことがありません。

2 番目の質問は、Livewire を使用してデータをロードしているのですが、インターフェイスの使用方法がわかりません。

これが 2 番目の質問のサンプル コードです:

App\Http\Livewire\Example

リーリー

メソッドにはパラメータを渡す必要があるため、上記のコードは失敗しますが、クラスはインターフェイスであるためインスタンス化することもできません。

私の知識に根本的なギャップがあるような気がすることは別として...私は正しい方向に進んでいるように見えますが、クラス/インターフェイスの使用法が正しく設定されていません。

メソッド内からこのインターフェイスを呼び出す方法について何か提案はありますか、それともどこかで問題が発生していますか?

###そこには、###
P粉517090748P粉517090748219日前321

全員に返信(1)返信します

  • P粉615829742

    P粉6158297422024-02-18 11:23:42

    メソッドベースの依存関係注入を行っています。これは完全に有効ですが、おそらくコンストラクターベースの依存関係注入よりも一般的ではありません。どちらも同様の結果、つまり必要な依存関係を注入しますが、主な違いは依存関係の範囲 (メソッドとクラス) です。

    標準の Laravel/PHP 環境では、コンストラクター インジェクションは次のようになります:

    リーリー

    Livewire は、Component__construct 関数を使用する代わりに、mount() 関数を使用する必要があるという点で少し異なります。

    リーリー

    bindingsサービス コンテナを正しく構成したと仮定すると、すべてが正常に動作するはずです。

    返事
    0
  • キャンセル返事