Php Zend Framework2具有不同配置的服务工厂
我正在使用Zend Framework2,并创建了一个为我做一些工作的服务。 此服务用于创建PDF文件,需要使用运行Apache FOP的主机名进行配置 我已经编写了一个PdfServiceFactory(implements\Zend\ServiceManager\FactoryInterface),它创建了一个PdfService实例,并使用所需的主机名对其进行配置 出于对这个问题不重要的原因,我们需要多个这样的服务,每个服务都配置了不同的主机名。 使用这些服务的代码不知道有多个。他们只接受一项服务,只需使用一项即可 最好的方法是什么Php Zend Framework2具有不同配置的服务工厂,php,zend-framework,zend-framework2,Php,Zend Framework,Zend Framework2,我正在使用Zend Framework2,并创建了一个为我做一些工作的服务。 此服务用于创建PDF文件,需要使用运行Apache FOP的主机名进行配置 我已经编写了一个PdfServiceFactory(implements\Zend\ServiceManager\FactoryInterface),它创建了一个PdfService实例,并使用所需的主机名对其进行配置 出于对这个问题不重要的原因,我们需要多个这样的服务,每个服务都配置了不同的主机名。 使用这些服务的代码不知道有多个。他们只接受
- 我是否需要使用interface FactoryInterface为此编写另一个工厂
- 我可以在module.config.php中为每个将传递到工厂的条目设置参数吗
- 还有别的吗
pdfservice.one:
class: \Name\Space\PdfService
arguments:
- hostname.tld
pdfservice.two:
class: \Name\Space\PdfService
arguments:
- anotherhostname.tld
但是如何在ZendFramework2中实现这一点而不创建大量工厂。您需要实例化服务并在之后注入所需的参数。就我个人而言,我创建了多个工厂(实例化同一个类,注入不同的参数)。但是,如果构造函数参数相同(只是配置不同),则可以创建一个抽象工厂(实现
Zend\ServiceManager\AbstractFactoryInterface
)。之后注入会将服务配置的逻辑移动到多个位置,这是由于明显的原因而不需要的。如果您请求服务X,它应该可以运行了。AbstractFactorys可以工作,但我不喜欢在容器无法找到其他方法时检查它们。在ZendFramework2中,多个工厂类可能是最好的方法。虽然它也可以与配置文件中的闭包结合使用,但可能会使它更干净一些。