什么时候应该使用什么?
我可以选择在 index.php 入口脚本文件中定义常量,就像 Yii2 guide: constants 中推荐的那样。 .或者我可以在配置中使用参数 - 在 YII2 guide: params 中解释.两者都是针对每个应用程序的,而不是真正全局的。
目前,在我看来,如果我想像这样组合值,params 有点不太舒服:
define('SOME_URL', 'http://some.url');
define('SOME_SPECIALIZED_URL', SOME_URL . '/specialized');
此外,与常量相比,访问代码(Yii::$app->params['something']
)要多一些。
那么我什么时候应该或可以使用什么?
小更新:在 PHP 7 中,define()
也支持数组,因此整个 params 结构可以配置为常量。 IDE 可能会更好地支持它。
最佳答案
我倾向于使用 Yii 应用程序参数。这样做的主要原因是这些参数中保存的值往往会根据运行代码的环境而改变。所以我将有一个运行的构建系统(我使用 Phing )并从中提取设置非版本控制文件,例如 build.properties。
因此,任何开发数据库设置、开发域设置、api 沙箱地址等都将加载到我的开发环境中,并且在实时服务器上运行构建时将使用正确的生产值。
如果您在某种 php 文件中设置这些值,那么使用版本控制进行跟踪就会出现问题,因为每次您在开发环境中构建时都会对 index.php 文件进行更改。有些人甚至可能最终错误地提交了这些更改。
所以总而言之,我会说如果它们是真正的常量——在代码运行的任何环境中都是一样的——它们可能是一个常量。如果这些值可能会发生变化,具体取决于运行代码的位置,那么我的首选是将它们放在参数中并让您的构建系统从非版本控制文件中加载它们。
关于php - Yii2:配置参数与 const/define,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28317208/