当我检查了多个来源时,定义常量变量的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文件,因为它并不是真正想要的。
有任何解决方法吗?谢谢。
P.S 为什么这样做如此困难,而使用常量定义却是PHP的非常基本的原则。 CI已找出这些问题:/
答案 0 :(得分:1)
执行此操作的最佳方法是将它们添加到config/app.php
文件中。您可以在provider []列表上方的某个位置添加
'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');
答案 1 :(得分:1)
我想如果不想在include
文件中添加很多内容,可以在config.php
上使用php .env
。就是这样
<?php
include 'something_constant.php';
return [
THE_ID_OF_SOMETHING_NICE = ['many', 'nice', 'data'],
];