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