Я сталкивался с проблемой, которую описал неоднократно.
При чем, по моим наблюдениям, так же отличается приоритет сервисов объявленных через фабрику и через замыкание. У замыкания приоритет ниже, они идут после фабрик. Привожу пример
Вот рабочий вариант фабрики для навигации, внутри фабрики проверяется авторизация из сервиса Auth.
Так работает в Module.php.
'index_navigation' => function (\Zend\ServiceManager\ServiceManager $sm) {
$navigationF = new Navigation\Service\IndexNavidationFactory();
$navigation = $navigationF->createService($sm);
return $navigation;
},
А вот так уже не работает.
'index_navigation' => new Navigation\Service\IndexNavidationFactory(),
Выдается ошибка внутри фабрики о том, что не найден Auth сервис.
Та же ошибка, если переместить в module.config.php
Да, вы правы, оно мержится в итоге, но важно в каком порядке объявлены модули, где объявлен сервис и (тут я могу ошибаться, но пример выше показателен) как он объявлен.
Где-то на немецком ресурсе я видел схему того в каком порядке все мержится. Вот тут.
Именно из-за таких нюансов, раз уж вы взялись писать, я прошу вас написать и о порядке загрузки по русски.
А я вот на Кохане пару крупных проектов запустил, а потом она умерла.
И я перешел на Zend2 (до этого посмотрев другие современные решения).
Я понимаю, что работы проделано много уже и выкидывать или переписывать свой код жалко, но какой смысл изучать или писать что-то на уже мертвом (отставшем) фреймворке?
Напишите еще о последовательности, в которой загружаются сервисы определенные в module.config.php и Module.php.
Так, например, если в сервисе используется фабрика для построения навигации, внутри которой хочется проверить авторизацию, а авторизация это тоже сервис, то, в зависимоти от того, где какой сервис определен, зависит — потратите ли вы лишние полчаса на WTF или нет.
Хотелось бы видеть в ZFTool гораздо больше генерации кода, чем есть сейчас.
Например генерацию REST, ресурса или CRUD по Doctrine — это все есть уже в Symfony 2.
На практике всегда так и есть. В исходном коде в случае Маркуса будет ад, который все равно придется рефакторить, в случае развития проекта и приводить к версии Бориса, на что уйдет еще больше времени, чем писать сразу расширяемую версию.
Я с такими неосознанными KISS уже достаточно намучался. При чем переписать проект полностью в таком случае проще, чем править частями. И вот тут ситуация, что бывает у бизнеса нет времени или ресурса на это и тебе предлагают либо поддерживать что есть, либо мы тебе замену найдем.
Лично мне картинка Бориса нравится больше и в ней нет ничего сложного на самом деле. Я уверен и код внутри всей структуры не такой уж сложный.
Версия Маркуса может быть актуальна только в случае быстрого стартапа, но это будет протототип и его придется выкинуть.
Наверное имелось в виду «реализует».
Из архива, т.к. она не доступна сейчас.
Вот еще кое-что. Может поможет.
При чем, по моим наблюдениям, так же отличается приоритет сервисов объявленных через фабрику и через замыкание. У замыкания приоритет ниже, они идут после фабрик. Привожу пример
Вот рабочий вариант фабрики для навигации, внутри фабрики проверяется авторизация из сервиса Auth.
Так работает в Module.php.
А вот так уже не работает.
Выдается ошибка внутри фабрики о том, что не найден Auth сервис.
Та же ошибка, если переместить в module.config.php
Да, вы правы, оно мержится в итоге, но важно в каком порядке объявлены модули, где объявлен сервис и (тут я могу ошибаться, но пример выше показателен) как он объявлен.
Где-то на немецком ресурсе я видел схему того в каком порядке все мержится. Вот тут.
Именно из-за таких нюансов, раз уж вы взялись писать, я прошу вас написать и о порядке загрузки по русски.
В остальном спасибо, подписался на всех почти. :)
И я перешел на Zend2 (до этого посмотрев другие современные решения).
Я понимаю, что работы проделано много уже и выкидывать или переписывать свой код жалко, но какой смысл изучать или писать что-то на уже мертвом (отставшем) фреймворке?
Так, например, если в сервисе используется фабрика для построения навигации, внутри которой хочется проверить авторизацию, а авторизация это тоже сервис, то, в зависимоти от того, где какой сервис определен, зависит — потратите ли вы лишние полчаса на WTF или нет.
Только там по ссылке пароль!
Например генерацию REST, ресурса или CRUD по Doctrine — это все есть уже в Symfony 2.
На практике всегда так и есть. В исходном коде в случае Маркуса будет ад, который все равно придется рефакторить, в случае развития проекта и приводить к версии Бориса, на что уйдет еще больше времени, чем писать сразу расширяемую версию.
Я с такими неосознанными KISS уже достаточно намучался. При чем переписать проект полностью в таком случае проще, чем править частями. И вот тут ситуация, что бывает у бизнеса нет времени или ресурса на это и тебе предлагают либо поддерживать что есть, либо мы тебе замену найдем.
Лично мне картинка Бориса нравится больше и в ней нет ничего сложного на самом деле. Я уверен и код внутри всей структуры не такой уж сложный.
Версия Маркуса может быть актуальна только в случае быстрого стартапа, но это будет протототип и его придется выкинуть.
Лучшая панель — console.
Я использую расширение Time Tracker, считает только активную.