サービスファクトリがあなたのケースでは機能しない理由を理解するためにいくつか問題があります。お互い関係のない別のサービスクラスを返す必要がありますか?これがニーズに合わない場合は、今すぐ
class NewsletterFactory
{
public function __constructor(...)
{
// Receive arguments needed to create the service below
}
public function get()
{
// Say the variable $userInput exists and is derived from constructor
if ($userInput === 'string')
return new NewsletterManager($dynamicArgument1);
if ($userInput === 'integer')
return new AnotherNewsletterManager($dynamicArgument2);
return new DefaultNewsletterManager();
}
}
:私は工場出荷時の例から何
は、あなたがこのような何かを行うことができることです。また、必要なものを返すサービスCustomFactory
を作成することもできます。返されるものは直接サービスではないので、何でもできます。しかしこれにより、CustomFactory
によって作成されたオブジェクトを依存関係コンテナから要求することができなくなります。
FormFactoryと同様です。フォームタイプをインスタンス化するために使用されるファクトリです。しかし、FormFactory
は依存性注入タグとコンパイラ・パスと結合されているので、より強力です。各タイプは依存性注入システムに登録され、それらを単独で取り出すことができます。私はちょうどForm
コンポーネントのすべての内部を持っていませんが、他の方法では問題が解決できないと思います。
よろしくお願いいたします。
マット