如何定义可在Laravel 5中的配置文件中使用的常量?

时间:2019-06-21 02:27:03

标签: php laravel laravel-5 lumen

当我检查了多个来源时,定义常量变量的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已找出这些问题:/

2 个答案:

答案 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'],
];