Shopware 6、Symfony の抽象クラスと依存関係注入
P粉680087550
P粉680087550 2024-01-09 08:44:57
0
1
506

現在、私は Symfony に基づいて Shopware 6 拡張機能を開発しています。理解できないのは、抽象クラスと依存関係の注入を実装する方法です。

したがって、コードをリファクタリングしてこれらのメソッドを頻繁に使用できるようにしたいのですが、別のコンテキスト (別のリポジトリを使用) で使用できるようにしたいと考えています。 リーリー

ご覧のとおり、コンストラクト (製品リポジトリ) 内に依存関係の注入があります。ここで私の質問は、抽象クラスを作成するにはどうすればよいですか、つまり、これらのメソッドを保存しますが、子クラスは必要なリポジトリで親構造を「オーバーライド」しますか?たとえば、

ProductRepositorygetDataId (現在は getExistingProductId と呼ばれていますが、リファクタリングされ、抽象クラスで名前が変更されます) メソッドを使用したいのですが、次のクラスでは使用したいと考えています。 カテゴリリポジトリでも同じ方法ですか?

Service.xml は依存関係インジェクターとも呼ばれます

リーリー

私は OOP を初めて使用します。良い例とコードの説明を提供してください。ありがとう!

P粉680087550
P粉680087550

全員に返信(1)
P粉248602298

私の理解が正しければ、最初のパラメータのみを交換可能にし、例の 3 つのメソッドは抽象化で実装する必要があります。ここにアイデアがあります。

###まとめ:### リーリー

コンストラクターでリポジトリを取得し、共通リポジトリに関するすべての共通メソッドを抽象化で実装します。各メソッドに (おそらく) 特定の条件を使用しているため、拡張クラスに

getDataId

メソッドを実装したいと考えています。したがって、抽象シグネチャを定義して拡張クラスに実装を強制するだけです。 あなたのサービスレベル:

リーリー

他の挿入されたサービスはこの特定のインスタンスでのみ使用されるため、拡張クラスではリポジトリを親コンストラクターに渡すだけです。

getDataId

を実装すると、特定の条件を作成し、その条件を使用して保護された (拡張機能でのみ使用できるため) searchId メソッドを呼び出すことができます。

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート