【发布时间】:2015-04-03 17:29:29
【问题描述】:
我应该什么时候使用?
我可以选择在 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 可能更好地支持。
【问题讨论】:
-
我不记得任何关于它的具体建议。我个人更喜欢参数。常量的优点:编写的代码更少,IDE 自动完成支持。
-
您可以使用常量仅存储原始值 - 数字、字符串、布尔值等。对于复杂数据,您必须选择参数(因为您无法将数组和对象存储在常量中),并且通常需要将数据组织在逻辑组中。
-
另外,当您使用一些部署工具时,您可以为不同的部署环境设置不同的值。当您只有在每个环境中都相同的值时,应该使用常量
-
如果你需要在任何地方使用值,请使用 Yii::$app->params。但是,如果您将使用一次 value,那么我建议您只使用常量。但请记住,在 Yii::$app->params 中,您可以使用环境变量,例如 getenv('any_key');
标签: php configuration config yii2