Dependency injection 是否可以将参数传递给Symony2容器构造函数
在Symfony2中创建服务容器时,通常会将“静态”参数(如其他类等)传递给其构造函数 但是,我想创建一个工厂,因此我需要能够将一个动态参数传递给服务构造函数 我发现的例子(例如)都使用静态参数作为参数Dependency injection 是否可以将参数传递给Symony2容器构造函数,dependency-injection,symfony,containers,Dependency Injection,Symfony,Containers,在Symfony2中创建服务容器时,通常会将“静态”参数(如其他类等)传递给其构造函数 但是,我想创建一个工厂,因此我需要能够将一个动态参数传递给服务构造函数 我发现的例子(例如)都使用静态参数作为参数 但是,如果我想让我的工厂根据(例如)用户输入决定返回哪个对象,我该怎么办?我在理解为什么service factory不应该处理您的案例时遇到一些问题。是否需要返回彼此无关的不同服务类 我从工厂示例中看到,您可以执行以下操作: class NewsletterFactory { publ
但是,如果我想让我的工厂根据(例如)用户输入决定返回哪个对象,我该怎么办?我在理解为什么service factory不应该处理您的案例时遇到一些问题。是否需要返回彼此无关的不同服务类 我从工厂示例中看到,您可以执行以下操作:
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
功能更强大,因为它与依赖项注入标记和编译器过程相结合,后者将每种类型注册到依赖项注入系统中,以便可以自己检索它们。我并不完全了解表单
组件的所有内部结构,但我认为如果其他方法不这样做,它可以解决您的问题
问候,马特