Широкий var приложения ZF2 (уникальный уникальный идентификатор запроса)
Я использую Zend-Framework2, и я хотел бы регистрировать информацию о запросе. Не все серверы предоставляют $_SERVER['UNIQUE_ID'], поэтому я хотел бы сгенерировать свой собственный (см. Формат http://en.wikipedia.org/wiki/Universally_unique_identifier).
В ZF2 все делается внутри модулей, но я хотел бы создать переменную или константу в масштабе приложения с уникальным идентификатором. Я могу добавить его в index.php, но это не тот путь, я думаю... Другой вариант заключается в том, что генерация уникального идентификатора запроса выполняется в методе onBootstrap вызываемого модуля, но затем я Я повторяюсь, и это не желательно, я думаю.
Где я должен в идеале поместить кусок кода для генерации UUID и добавить его в качестве переменной / константы всего приложения?
Заранее спасибо!
Подобный вопрос: регистрировать каждый запрос в ZF2
2 ответа
Другой вариант заключается в том, что генерация уникального идентификатора запроса выполняется в методе onBootstrap вызываемого модуля, но затем я повторяюсь, и я думаю, что это нежелательно.
Я думаю, что вы недоразумение модулей здесь Ivo. onBootstrap
Метод вызывается для каждого модуля, у которого он есть, независимо от того, какой модуль в конечном счете разрешен и отправлен для текущего запроса. Это не тот случай, когда маршрутизатор находит контроллер и затем загружает этот единственный модуль, все они загружаются модулем ModuleManager до того, как произойдет какая-либо маршрутизация.
С этой точки зрения вы можете поместить его в модуль, генерирующий UUID при загрузке. Чтобы сделать его доступным для всего сайта удобным способом, установите это значение как сервис, и оно будет доступно в любом месте у менеджера сервисов.
public function onBootstrap(EventInterface $e) {
$sm = $e->getApplication()->getServiceManager();
$uuid = isset($_SERVER['UNIQUE_ID']) ? $_SERVER['UNIQUE_ID'] : yourUUIDGeneratingMethod();
$sm->setService('UUID', $uuid);
}
Ну, вы можете добавить переменную всего приложения в config/autoload/global.php. (Однако я думаю, что все массивы конфигурации объединяются в процессе загрузки страницы. Поэтому другие конфигурации также должны работать.) Для UUID Generator я бы предложил сделать модуль с именем, подобным ProjectServices, в папку поставщика и определить службу для генерации uuid (например, vendor\ProjectServices\src\ProjectServices\Service\UUIDGenerate.php) в это. Вы можете определить дополнительные сервисы, такие как глобальный регистратор, в соответствии с вашими требованиями в эту папку.