t4web / default-service
ZF2 模块,用于创建可调用的服务和工厂
1.1.3
2018-06-17 07:19 UTC
Requires
- php: >=5.5
- zendframework/zend-servicemanager: >=2.6
README
ZF2 模块,用于创建可调用的服务和工厂。
安装
在您的 composer.json 中添加此项目
"require": { "t4web/default-service": "~1.0.0" }
现在运行以下命令,让 composer 下载 T4web\DefaultService
$ php composer.phar update
安装后
在您的 application.config.php
文件中启用它。
<?php return array( 'modules' => array( // ... 'T4web\DefaultService', ), // ... );
问题
- 太多的可调用条目
'invokables' => [ CreateAction\ChangesValidator::class => CreateAction\ChangesValidator::class, API\AddFriend\ViewModel::class => API\AddFriend\ViewModel::class, API\RemoveFriend\ViewModel::class => API\RemoveFriend\ViewModel::class, API\CreateFriendRequest\ViewModel::class => API\CreateFriendRequest\ViewModel::class, API\UpdateFriendRequest\ViewModel::class => API\UpdateFriendRequest\ViewModel::class, // ... ],
这没有意义。
- 太多的工厂条目
'factories' => [ Domain\User\MySelf::class => Domain\User\MySelfFactory::class, Domain\User\Service\Creator::class => Domain\User\Service\CreatorFactory::class, Domain\User\Service\Updater::class => Domain\User\Service\UpdaterFactory::class, API\AddFriend\ChangesValidator::class => API\AddFriend\ChangesValidatorFactory::class, API\RemoveFriend\CriteriaValidator::class => API\RemoveFriend\CriteriaValidatorFactory::class, API\RemoveFriend\RemoveService::class => API\RemoveFriend\RemoveServiceFactory::class, API\CreateFriendRequest\CriteriaValidator::class => API\CreateFriendRequest\CriteriaValidatorFactory::class, API\CreateFriendRequest\Service::class => API\CreateFriendRequest\ServiceFactory::class, API\UpdateFriendRequest\CriteriaValidator::class => API\UpdateFriendRequest\CriteriaValidatorFactory::class, API\UpdateFriendRequest\Service::class => API\UpdateFriendRequest\ServiceFactory::class, Frontend\ShowUser\ViewModel::class => Frontend\ShowUser\ViewModelFactory::class, Frontend\Friends\Service::class => Frontend\Friends\ServiceFactory::class, Frontend\Friends\ViewModel::class => Frontend\Friends\ViewModelFactory::class, Backend\LoginAs\Service::class => Backend\LoginAs\ServiceFactory::class, Friend\Listener\FriendRequestAccept::class => Friend\Listener\FriendRequestAcceptFactory::class, ],
如果您的工厂命名有规则(ServiceClassName
+ Factory
字词) - 那么在该配置中就没有意义。
解决方案
在您的项目中添加 DefaultService
模块。在盒子里我们只有一个抽象工厂:DefaultServiceAbstractFactory
- 它非常简单。如果服务有工厂(ServiceClassName
+ Factory
字词) - 服务将由工厂创建。如果没有工厂,但类存在 - 服务将由构造函数创建。