【发布时间】:2010-10-12 23:29:44
【问题描述】:
我想在 CakePHP 中创建一个全局变量。如果我在 app_controller.php 中定义了一些东西,比如
var $varName
我可以访问
$this->varName
来自我的任何控制器,但我无法从模型中获取它。
如何创建可从模型访问的全局变量?
$varName 的值直到运行时才知道,所以我不认为 bootstrap.php 是一个选项。
【问题讨论】:
标签: cakephp
我想在 CakePHP 中创建一个全局变量。如果我在 app_controller.php 中定义了一些东西,比如
var $varName
我可以访问
$this->varName
来自我的任何控制器,但我无法从模型中获取它。
如何创建可从模型访问的全局变量?
$varName 的值直到运行时才知道,所以我不认为 bootstrap.php 是一个选项。
【问题讨论】:
标签: cakephp
CakePHP 的新Configure class 可以 用于存储和检索应用程序 或运行时特定的值。是 小心,这门课可以让你 存储任何东西,然后使用它 代码的任何其他部分
【讨论】:
a sure temptation to break the MVC pattern CakePHP was designed for. The main goal of Configure class is to keep centralized variables that can be shared between many objects. Remember to try to live by "convention over configuration" and you won't end up breaking the MVC structure we’ve set in place.
要保存全局变量,请使用配置类。例如:
Configure::write('Company.name','Pizza, Inc.');
要稍后在代码的任何位置读取变量,请使用:
配置::read('Company.name'); //yields: 'Pizza, Inc.'
推荐的存储全局常量的文件在app/config/bootstrap.php
有关详细信息,请参阅:
配置类 - Configure Class CakePhp。
或关于引导的第 3.4.7 节
【讨论】:
你可以在 app/cofig/core.php 中声明全局变量
Configure::write('variable Name','Variable Value');
你可以这样打印:
Configure::read('Variable Name');
【讨论】:
您的应用程序的全局函数和变量可以在 app/config/bootstrap.php 中定义
您可以在 app/config/ 目录下的 bootstrap.php 中定义常量。它可以全局用于任何控制器或视图。
【讨论】:
您可以尝试使用 bootstrap.php (cake 3) 定义常量
此文件非常适合许多常见的引导任务:
定义便利函数。
声明常量。
定义缓存配置。
定义日志记录配置。
加载自定义变形。
加载配置文件。
参考https://book.cakephp.org/3.0/en/development/configuration.html#bootstrapping-cakephp
【讨论】:
其实,你为什么要这么做?模型应该不知道控制器的存在。
如果它是一个业务(模型)对象,就这样创建它。如果没有,模型不应该知道它。
【讨论】: