Php ZF2中的服务是什么
我已经搜索了很多,以了解什么是服务,为什么以及何时应该使用它们?创建服务的最佳方式是什么?它和插件有什么区别Php ZF2中的服务是什么,php,zend-framework2,Php,Zend Framework2,我已经搜索了很多,以了解什么是服务,为什么以及何时应该使用它们?创建服务的最佳方式是什么?它和插件有什么区别 我已经从和中读取了资源。服务可以是任何将由服务定位器实例化的对象 以下是共同事务: 控制器 控制器插件 查看帮助程序 如果您使用的是UserTableGateway服务,那么您还可以使用它来管理用户的持久性。然后,您必须为服务定位器提供一个工厂,该工厂将实例化该类并提供依赖项(表名、适配器等)。什么是服务? “服务”是应用程序(通常是PHP对象实例)中向服务管理器注册的任何信息 服务
我已经从和中读取了资源。服务可以是任何将由服务定位器实例化的对象 以下是共同事务:
- 控制器
- 控制器插件
- 查看帮助程序
如果您使用的是UserTableGateway服务,那么您还可以使用它来管理用户的持久性。然后,您必须为服务定位器提供一个工厂,该工厂将实例化该类并提供依赖项(表名、适配器等)。什么是服务? “服务”是应用程序(通常是PHP对象实例)中向服务管理器注册的任何信息 服务管理器充当所有类的中央存储库;使用“服务工厂”抽象他们的创作。这将允许使用一个或多个“服务名称”在应用程序的任何区域请求信息 所使用的术语并非特定于ZF2,而是特定于ZF2和设计模式 为什么要使用服务?
- 注册服务名称或别名
FooService
的任何一点要求不同,我可以通过更新注册到该名称的工厂,将默认的FooServiceFactory
替换为新的、可能非常不同的服务
- 抽象对象的创建
- 依赖注入
电子邮件服务
,它有许多复杂的依赖项,所有这些依赖项都可以从服务管理器请求,每个都有自己的工厂
电子邮件服务工厂示例:
class EmailServiceFactory implements FactoryInterface
{
public function createService(ServiceLocatorInterface $serviceLocator)
{
return new EmailService(
$serviceLocator->get('Email\Config\EmailConfig'),
$serviceLocator->get('Email\Entity\Repository\EmailRepository'),
$serviceLocator->get('Message\Entity\Repository\MessageStatusRepository'),
$serviceLocator->get('Email\Service\EmailTransportService'),
$serviceLocator->get('Email\Service\EmailTemplateService')
);
}
}
ZF2
- 工厂
- 插件管理器
FormElementManager
、ControllerPluginManager
和ViewHelperPluginManager