首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ZF2应用程序范围的变量(自定义唯一请求id)

ZF2应用程序范围的变量(自定义唯一请求id)
EN

Stack Overflow用户
提问于 2013-03-29 17:47:02
回答 2查看 629关注 0票数 2

我正在使用Zend-Framework2,我想记录有关请求的信息。并不是所有的服务器都提供$_SERVER‘’UNIQUE_ID‘,所以我想生成自己的$_SERVER’‘UNIQUE_ID’(格式参见http://en.wikipedia.org/wiki/Universally_unique_identifier )。

在ZF2中,所有操作都在模块中完成,但我想创建一个应用程序范围的变量或常量,其中包含惟一的ID。我可以将其添加到index.php中,但我认为这不是可行的方法……另一种选择是,唯一请求id的生成是在调用的模块的onBootstrap方法中完成的,但是我重复了一遍,我认为这是不可取的。

理想情况下,我应该将生成UUID并将其作为应用程序范围的变量/常量添加的代码放在哪里?

提前感谢!

类似的问题:Log each request in ZF2

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-03-29 21:37:25

另一种选择是,唯一请求id的生成是在被调用的模块的onBootstrap方法中完成的,但是我重复了一遍,我认为这是不可取的。

我认为你误解了这里的模块,Ivo。对于具有onBootstrap方法的每个模块,都会调用该方法,而不管最终为当前请求解析和调度的是哪个模块。这不是路由器找到控制器然后引导单个模块的情况,它们都是在路由发生之前由ModuleManager引导的。

从这个角度来看,您可以将它放在一个模块中,在引导时生成UUID。要使其在站点范围内以方便的方式可用,请将该值设置为服务,然后可从服务管理器的任何位置使用该值。

代码语言:javascript
复制
public function onBootstrap(EventInterface $e) {
    $sm = $e->getApplication()->getServiceManager();
    $uuid = isset($_SERVER['UNIQUE_ID']) ? $_SERVER['UNIQUE_ID'] : yourUUIDGeneratingMethod();
    $sm->setService('UUID', $uuid);
}
票数 3
EN

Stack Overflow用户

发布于 2013-03-29 18:16:25

您可以将应用程序范围的变量添加到config/autoload/global.php中。(然而,我认为所有的配置数组在页面加载过程中都被合并了。因此其他配置也应该可以工作。)对于UUID生成器,我建议将一个名为ProjectServices的模块放入供应商文件夹中,并为uuid generate (Ex.vendor\ProjectServices\src\ProjectServices\Service\UUIDGenerate.php)到那里面。您可以根据需要在该文件夹中定义更多服务,如全局记录器。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15700838

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档