1

有人可以帮我理解Guilherme Blanco的“ZF1-Doctrine2-ServiceLayer”吗?

我正在尝试使用基本设置来运行它。但是 github 示例对我不起作用(我不得不使用 serviceLocator.ini 中的“服务定位器配置”,而不是“application.ini”,现在它似乎可以正确初始化)。我找不到任何关于如何使用它的说明。可能是愚蠢的问题,但我应该如何在控制器中获得服务?像这样的东西?

SomeController extends Zend_Controller_Action {
    public function someAction ()
    {
       $serviceLocator = Zend_Registry::get('serviceLocator');
       $serviceLocator->getService('TestService');
    }
}

我收到异常“无法找到服务'TestService'”。

有人可以提供有关此解决方案的服务逻辑的一些指导吗?非常感谢

4

1 回答 1

1

我无法为您提供太多帮助,但是,这种架构的原则是分离和抽象持久层。从“愚蠢”的角度来看,服务定位器(即依赖注入)与服务层的原理无关。两者都有不同的用途。服务定位器 (DiC) 可帮助您从应用程序的任何位置检索对象(它可以是服务、配置对象或您想要的任何东西)。

我不喜欢服务定位器的这种静态实现,我宁愿使用动作助手。


但是这个异常被抛出是因为你试图获得一个不存在的'TestService'。

ServiceLocator 通常与设置不同服务的“容器”一起使用。

确保在容器中正确配置了“TestService”(它可以是 PHP 类、INI、XML 或其他)。

查看其他服务并尝试了解它们的工作原理。

于 2011-11-03T11:39:34.893 回答