我正在使用 Zend-Framework2,我想记录有关请求的信息。 并非所有服务器都提供 $_SERVER['UNIQUE_ID'],因此我想生成自己的(请参阅 http://en.wikipedia.org/wiki/Universally_unique_identifier 了解格式)。
在 ZF2 中,一切都是在模块内完成的,但我想创建一个应用程序范围的变量或常量,其中包含唯一的 ID。 我可以将它添加到index.php,但这不是我认为的方法...另一个选择是唯一请求ID的生成是在被调用模块的onBootstrap方法中完成的,但是然后我'我重复了一遍,我认为这是不可取的。
理想情况下,我应该将生成 UUID 的代码放在哪里,并将其添加为应用程序范围的变量/常量?
提前致谢!
最佳答案
Another option is that the generation of the unique request id is being done in the onBootstrap method of the module that is called, but then I'm repeating myself and that is not desirable, I think.
我认为你在这里误解了模块,Ivo。 onBootstrap
方法会为每个具有该方法的模块调用,无论最终为当前请求解析和分派(dispatch)哪个模块。这不是路由器找到 Controller 然后引导单个模块的情况,它们都是在任何路由发生之前由 ModuleManager 引导的。
从这个角度来看,您可以将其放置在模块中,在 Bootstrap 上生成 UUID。为了使其以方便的方式在站点范围内可用,请将该值设置为服务,然后可以通过服务管理器在任何地方使用它。
public function onBootstrap(EventInterface $e) {
$sm = $e->getApplication()->getServiceManager();
$uuid = isset($_SERVER['UNIQUE_ID']) ? $_SERVER['UNIQUE_ID'] : yourUUIDGeneratingMethod();
$sm->setService('UUID', $uuid);
}
关于php - ZF2 应用程序范围的 var(自定义唯一请求 id),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15700838/