t4web/default-service

ZF2 模块,用于创建可调用的服务和工厂

1.1.3 2018-06-17 07:19 UTC

This package is auto-updated.

Last update: 2024-08-26 17:42:04 UTC


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',
  ),
  // ...
);

问题

  1. 太多的可调用条目
'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,
    // ...
],

这没有意义。

  1. 太多的工厂条目
'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 字词) - 服务将由工厂创建。如果没有工厂,但类存在 - 服务将由构造函数创建。