php - 如何定义可以在 Laravel 5 中跨配置文件使用的常量?
问题描述
当我检查多个来源时,Laravel 定义常量变量的方式是通过配置文件。但是,在我的情况下,我想在我的配置文件中使用常量,这是不可能的,因为正如我所读到的,不可能/不建议从另一个调用配置。
例子
常数:
define('THE_ID_OF_SOMETHING_NICE', 1);
define('THE_ID_OF_SOMETHING_UGLY', 2);
define('THE_ID_OF_SOMETHING_BAD', 12372);
config1.php
return [
THE_ID_OF_SOMETHING_NICE = ['many', 'nice', 'data'],
]
config2.php
return [
['many', 'nice', 'data', THE_ID_OF_SOMETHING_NICE],
]
如您所见,我不能使用已定义常量的实际值,因为它太不可读了。此外,我不想将我的 .env 文件与这些常量聚集在一起,因为它并不是真的适合它。
有什么解决方法吗?谢谢。
PS为什么这么难,而使用常量定义应该是PHP的非常基本的原则。CI已经弄清楚了:/
解决方案
最好的方法是将它们添加到config/app.php
文件中。您可以在 providers[] 列表上方的某个位置添加
'CONST' => ['THE_ID_OF_SOMETHING_NICE' => 1,
'THE_ID_OF_SOMETHING_UGLY' => 2,
],
代码中的任何地方都可以使用 laravel 助手访问这些值config('app.CONST.THE_ID_OF_SOMETHING_NICE');
您可以使用该.env
文件,但请注意,在生产中,该文件会被忽略,因为配置会自动缓存。在 .env 中,您可以添加该行THE_ID_OF_SOMETHING_NICE=1
并在config/app.php
您添加的文件中
'CONST' => ['THE_ID_OF_SOMETHING_NICE' => env('THE_ID_OF_SOMETHING_NICE'),],
从那里您可以使用config()
助手访问相同的值。
就我个人而言,我在app.php
文件中添加值并且不费心将值添加到 .env,因为大多数这些包含非关键信息(即您的私钥等)
如果您想创建一个单独的文件以与其他配置文件隔离,您可以创建一个文件 f.ex。config/constants.php
并返回一个数组,因为它在其他配置文件中完成。使其成为平面阵列(无'CONST'
键)。在方法app/providers/AppServiceProvider
中register()
添加
$this->mergeConfigFrom('config/constants.php', 'constants');
这样你就可以访问你的常量config('constants.THE_ID_OF_SOMETHING_NICE');
推荐阅读
- c++ - Qt Creator 似乎很难用 googletest 解析 Valgrind memcheck 输出
- visual-studio - 为什么 Visual Studio 中的智能感知不再显示方法重载?
- three.js - 使用来自两个向量的三个.js 四元数创建面的类出错
- docker - 码头工人 | 在 Python 3.8 上安装 lxml 的问题
- java - Java Swing`GridBagLayout`对齐问题
- r - 如何管理/调用具有未满足“验证(需要())”条件的闪亮“反应()”表达式
- c - 设计具有分配功能的堆栈结构
- c++ - 向 QML 地图添加新地点不起作用
- python - 检查张量的每个元素是否包含在列表中
- python - 在python中使用DFS在无向图中查找循环