Zend framework ZF1-Doctrine2-ServiceLayer

Zend framework ZF1-Doctrine2-ServiceLayer,zend-framework,doctrine-orm,service-layer,Zend Framework,Doctrine Orm,Service Layer,有人能帮我理解Guilherme Blanco的话吗 我正在尝试使用基本设置来运行它。但是github示例对我不起作用(我必须使用serviceLocator.ini中的“serviceLocator配置”,而不是“application.ini”,现在它似乎可以正确初始化)。我找不到任何关于如何使用它的说明。可能是个愚蠢的问题,但我到底应该如何在控制器中获得服务?像这样的 SomeController extends Zend_Controller_Action { public fu

有人能帮我理解Guilherme Blanco的话吗

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

SomeController extends Zend_Controller_Action {
    public function someAction ()
    {
       $serviceLocator = Zend_Registry::get('serviceLocator');
       $serviceLocator->getService('TestService');
    }
}
我遇到异常“找不到服务'TestService'”


有人能提供一些关于这个解决方案的服务逻辑的指导吗?非常感谢

我在实现方面帮不了你多少忙,但是,这种体系结构的原理是分离和抽象持久层。从“愚蠢”的角度来看,服务定位器(即依赖注入)与服务层的原理无关。两者都有不同的目的。服务定位器(DiC)帮助您从应用程序中的任何位置检索对象(可以是服务、配置对象或任何您想要的对象)

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


但是这个异常被抛出是因为您试图获得一个不直接的“TestService”

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

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


看看其他服务,试着了解它们是如何工作的。

我在实现方面帮不了你多少忙,但是,这种体系结构的原理是分离和抽象持久层。从“愚蠢”的角度来看,服务定位器(即依赖注入)与服务层的原理无关。两者都有不同的目的。服务定位器(DiC)帮助您从应用程序中的任何位置检索对象(可以是服务、配置对象或任何您想要的对象)

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


但是这个异常被抛出是因为您试图获得一个不直接的“TestService”

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

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


看看其他服务,试着了解它们是如何工作的。

感谢Boris的精彩解释!真正有助于理解一些事情。。至于例外情况,您也是对的,我必须使用services.ini“test”中指定的名称,而不是类“TestService”的名称。感谢Boris的精彩解释!真正有助于理解一些事情。。至于例外情况,您也是对的,我必须使用services.ini“test”中指定的名称,而不是类“TestService”的名称