在Zend Framework 2中,服务工厂分散在整个库中,最集中的是Zend\Mvc\Service
。 Zend\View\Helper\Service
,Zend\Navigation\Service
和其他一些地方也有服务工厂。我一直无法找到任何有关服务工厂组织的官方最佳实践。
我认为也许基于MVC的服务是相互依赖的,但情况并非总是如此(见Zend\Mvc\Service\ViewJsonStrategyFactory
)。我还考虑过这样的想法,即特定于库的服务工厂可能没有外部依赖关系,但情况并非总是如此(参见Zend\View\Helper\Service\IdentityFactory
)。
是否有关于组织ZF2服务工厂类的“官方”最佳实践?你如何组织工厂课程?
答案 0 :(得分:2)
不要认为有正式的会议。
我们在办公室里做的是在<Module>\Factory
命名空间内粘贴工厂。或者更常见的是在顶级命名空间内的Factory
子命名空间(FooModule\Factory
,Vendor\FooModule\Factory
等)。
因此,对于以下类:
App\Form\Delivery
App\Form\Fieldset\Contact
App\Listener\IdentityProvider
我们有工厂类:
App\Factory\Form\Delivery
App\Factory\Form\Fieldset\Contact
App\Factory\Listener\IdentityProvider
答案 1 :(得分:0)
如果没有任何文档,最佳做法是使用代码。正如您所观察到的,代码的粒度将存储在/Service
目录中(根据PSR-0规则的命名空间,类以Factory
结尾)。正如@sam所说,/Service
目录取决于服务的用例。
这就是我们在ZF2应用程序中的运作方式。
ZF3可能会宣布一个特定的最佳做法......虽然我对此表示怀疑[/意见]。考虑在@ freenode.net
上询问#zftalk.dev