有人可以帮我理解Guilherme Blanco的"ZF1-Doctrine2-ServiceLayer"吗?
我正在尝试使用基本设置来让它运行。但github示例对我不起作用(我必须使用serviceLocator.ini中的“Service Locator Configuration”而不是“application.ini”,现在它似乎正确初始化)。我找不到任何关于如何使用它的说明。可能是愚蠢的问题,但我究竟应该如何获得控制器中的服务?像这样的东西?
SomeController extends Zend_Controller_Action {
public function someAction ()
{
$serviceLocator = Zend_Registry::get('serviceLocator');
$serviceLocator->getService('TestService');
}
}
我遇到异常“无法找到服务'TestService'”。
有人可以提供一个关于此解决方案的服务逻辑的指南吗?非常感谢
答案 0 :(得分:1)
我对这个实现没有多大帮助,但是,这种架构的原则是分离和抽象持久层。从“愚蠢”的角度来看,服务定位器(即Dependancy Injection)与服务层的原理无关。两者都有不同的用途。服务定位器(DiC)可以帮助您从应用程序的任何位置检索对象(它可以是服务,配置对象或任何您想要的东西)。
我不喜欢Service Locator的静态实现,我宁愿使用动作助手。
但是这个例外被抛出了,因为你试图获得一个不合格的'TestService'。
ServiceLocator通常与设置不同服务的“容器”一起使用。
确保在Container中正确配置了“TestService”(它可以是PHP类,INI,XML或其他)。
查看其他服务并尝试了解它们的工作原理。