ZF1-Doctrine2-ServiceLayer - PullRequest
       20

ZF1-Doctrine2-ServiceLayer

1 голос
/ 02 ноября 2011

Может ли кто-нибудь помочь мне понять "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'".

Может кто-нибудь предоставить небольшое руководство по сервисной логике этого решения, пожалуйста? Большое спасибо

1 Ответ

1 голос
/ 03 ноября 2011

Я не могу вам сильно помочь с этой реализацией, однако, принцип такой архитектуры состоит в том, чтобы отделить и абстрагировать слой персистентности. С точки зрения "глупости" , Service Locator (т.е. Depenancy Injection) не имеет ничего общего с принципом Service Layer. Оба служат разным целям. Сервисный локатор (DiC) помогает вам извлекать объект (это может быть сервис, объект конфигурации или все, что вам нужно) из любой точки вашего приложения.

Я не фанат этой статической реализации Service Locator, где я бы предпочел использовать помощник действий.


Но это исключение выдается, потому что вы пытаетесь получить несуществующий «TestService».

ServiceLocator обычно работает с «Контейнером», который устанавливает различные службы.

Убедитесь, что ваш «TestService» правильно настроен в вашем контейнере (это может быть класс PHP, INI, XML или любой другой).

Взгляните на другие службы и попытайтесь понять, как они работают.

...