ZF1-Doctrine2-ServiceLayer

时间:2011-11-01 22:04:00

标签: zend-framework doctrine-orm service-layer

有人可以帮我理解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'”。

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

1 个答案:

答案 0 :(得分:1)

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

我不喜欢Service Locator的静态实现,我宁愿使用动作助手。


但是这个例外被抛出了,因为你试图获得一个不合格的'T​​estService'。

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

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

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