現在、私は Symfony に基づいて Shopware 6 拡張機能を開発しています。理解できないのは、抽象クラスと依存関係の注入を実装する方法です。
したがって、コードをリファクタリングしてこれらのメソッドを頻繁に使用できるようにしたいのですが、別のコンテキスト (別のリポジトリを使用) で使用できるようにしたいと考えています。 リーリー
ご覧のとおり、コンストラクト (製品リポジトリ) 内に依存関係の注入があります。ここで私の質問は、抽象クラスを作成するにはどうすればよいですか、つまり、これらのメソッドを保存しますが、子クラスは必要なリポジトリで親構造を「オーバーライド」しますか?たとえば、ProductRepository で getDataId (現在は getExistingProductId と呼ばれていますが、リファクタリングされ、抽象クラスで名前が変更されます) メソッドを使用したいのですが、次のクラスでは使用したいと考えています。 カテゴリリポジトリでも同じ方法ですか?
Service.xml は依存関係インジェクターとも呼ばれますリーリー
私は OOP を初めて使用します。良い例とコードの説明を提供してください。ありがとう!
私の理解が正しければ、最初のパラメータのみを交換可能にし、例の 3 つのメソッドは抽象化で実装する必要があります。ここにアイデアがあります。
###まとめ:### リーリーコンストラクターでリポジトリを取得し、共通リポジトリに関するすべての共通メソッドを抽象化で実装します。各メソッドに (おそらく) 特定の条件を使用しているため、拡張クラスに
getDataIdメソッドを実装したいと考えています。したがって、抽象シグネチャを定義して拡張クラスに実装を強制するだけです。
あなたのサービスレベル:
リーリー他の挿入されたサービスはこの特定のインスタンスでのみ使用されるため、拡張クラスではリポジトリを親コンストラクターに渡すだけです。
getDataIdを実装すると、特定の条件を作成し、その条件を使用して保護された (拡張機能でのみ使用できるため)
searchId
メソッドを呼び出すことができます。