【发布时间】:2013-03-22 08:34:19
【问题描述】:
我想设置一个可在 CakePHP 应用程序中访问的全局变量(在控制器、模型和视图中)。对于进入应用程序的每个请求,变量值可能不同。最好的设置方法是什么?
我想到的一些选项:
在 bootstrap.php 中使用 Configure::write 来设置这个变量,并在任何地方使用 Configure::read 来读取值。我不确定这是否是最佳选择,因为我找不到任何关于 Configure 数组范围的明确文档。似乎 Configure 通常用于站点范围/应用程序范围的变量,因此不确定每个 HTTP 请求是否都有自己的 Configure 数组。
将此值写入 bootstrap.php 中的 $GLOBALS 数组。这是一个好主意吗?想不出任何缺点,但似乎不鼓励使用 $GLOBALS。
以某种方式从 bootstrap.php 导出或设置一个全局变量,该变量的作用域是请求和线程安全的,并且在该请求的应用程序中可用。不知道如何/是否可能。
请帮忙!
【问题讨论】:
-
@pleasedontbelong 当然,会话是一种解决方案 - 虽然并不理想,因为我不希望在请求之间维护状态(通常用于会话)。寻找仅在每个请求的 HTTP 请求-响应范围内自动持续的东西。
-
您是否考虑将其添加到CakeRequest 对象中?可以在整个应用程序中轻松访问当前请求。虽然我想知道是否应该从您的模型中“检索”这些信息,或者“传递给”模型(我通常更愿意将信息作为参数传递给您的模型,这是一种更简洁的方法)
标签: php cakephp global-variables