Для модуля есть несколько параметров для настройки ресурсов, например, соединение с базой данных.Для ZF2 DoctrineModule и DoctrineORMModule поддерживаются самим Doctrine, и Entity Manager создается только на , когда вы хотите его использовать.Вместо подхода ZF1, когда соединения с базой данных создаются во время начальной загрузки, эти модули имеют своего рода своевременность: создайте экземпляр непосредственно перед тем, как он вам понадобится.
Итак: вам нужно настроить менеджер соединений и сущностей в модуле, который выполняется с помощью контейнера внедрения зависимостей.Эта конфигурация выполняется модулем, поэтому вам следует убедиться, что модуль настроен правильно.Затем в своем сценарии вы извлекаете диспетчер сущностей из DIC, и создается экземпляр EM, именно то, что вам нужно.
Как настроить модули?Сначала модули загружаются , затем инициируются .Это делается в вызове $moduleManager->loadModules()
из-за того, что несколько слушателей прослушивают событие загрузки, таким образом создавая экземпляры модулей и выполняя метод init()
для этих модулей.Также имеется прослушиватель для настройки модулей, поэтому DI может быть настроен правильно.В настоящее время модули настроены, но не всегда готовы к работе.Последний готовый шаг - это начальная загрузка , которая выполняется Zend\Mvc\Bootstrap
, начальной загрузкой Zend\Mvc\Application
.
Это означает, что если вы копируете этот скрипт index.php, но только удалить последнюю строку ($application->run()->send()
), модули загружены, контейнер DI настроен и приложение загружено.Теперь вы можете получить локатор DI и захватить менеджер сущностей:
$em = $application->getLocator()->get('doctrine_em');
Обратите внимание на функцию CLI в zf2, которая появится в некоторых следующих бета-версиях. RFC готов в данный момент, и когда он будет готов к экспериментам, он будет объединен с мастером zf2.Это облегчает создание приложений CLI намного .У вас есть одна точка входа (например, app.php), и «настоящая работа» подобна приложениям http MVC, выполняемым контроллерами.Если у вас есть этот app.php, вам будет очень легко добавить больше функций CLI, поскольку это так же просто, как добавить еще несколько контроллеров с действиями и (возможно) маршрут к этой точке.