在Lumen中,我应该把常量放在哪里?

3

我正在使用 Lumen 编写一个 Web 服务,需要存储一些常量,特别是错误值,还有其他配置参数。最适合放置这些常量的位置在哪里?


1
Lumen框架的所有配置选项都存储在.env文件中。 - Nikhil
或者您可以创建一个Config类,然后定义静态变量。 - Nikhil
我不是指Lumen的配置,而是我的Web服务。我希望我的错误代码在一个单独的文件中。关于你的第二条评论,这是一个选项,但我不确定应该把这些类放在哪里。理想情况下,它只需要是全局定义语句。 - kaan_a
5个回答

4
这是我完成它的方法。 我在bootstrap文件夹中创建了一个const.php文件,其中定义了一些错误代码。
<?php
define('VALIDATION_EXCEPTION',422);

我使用 require_once 将 const.php 文件包含到 app.php 中。
<?php
require_once __DIR__.'./const.php';

现在我可以从任何地方调用VALIDATION_EXCEPTION。例如。
$router->get('/test',function(){
return VALIDATION_EXCEPTION;
});

就是这样!


3
这个解决方案来自于这个链接
.env 文件用于存储每个环境的配置和敏感凭证。
您可以维护一个包含此类型数据的配置文件。Lumen 没有像 Laravel 一样的默认配置,因此您需要添加所需的配置目录,并告诉 Lumen 使用它。
$ mkdir config
$ touch config/app.php

在app.php文件中,你可以返回一个包含配置信息的数组:
// config/app.php
<?php
return [
   'order_by' => 'whatever'
   // and so on
];

然后告诉Lumen在bootstrap/app.php中从app.php加载配置,方法是在$ app初始化后添加以下内容:
$app->configure('app');

最后,您可以使用config()助手方法来获取配置:
config('app.order_by') // whatever

2
在config/目录下创建一个constants.php文件,并将您的设置放入一个数组中:
<?php

return [
    'CONTACT_NAME' => 'Admin'
];

那么在您的控制器中,您可以使用 Config 门面获取该值:

echo Config::get('constants.CONTACT_NAME');

1
如果我们在谈论Laravel,我非常确定这将是正确的答案。但是Lumen没有配置文件夹。我可以创建一个,但我怀疑它是否有效。 - kaan_a
你可以创建并且它应该能够正常工作,因为Lumen遵循Laravel的结构。 - pspatel
1
我尝试过了,不行。门面不存在。我可以使用 app('config') 访问配置对象,但它不包含我在 /config/errors.php 中定义的任何常量。 - kaan_a
你使用的是哪个版本?因为这是官方 GitHub 上讨论的相同问题。https://github.com/laravel/lumen-framework/issues/107 - pspatel
composer.json 文件中写着 5.6.*,我正在尝试找出 * 代表什么,但是到目前为止我检查过的文件中都没有版本号的注释。我会继续寻找。但我认为这几乎是最新的了。我只是在一周前按照标准安装程序进行了安装。这个之前有用过吗?最近出了问题吗?你应该最终编辑你的答案,这样我才能诚信地给你打分。 - kaan_a

1

1. 在 App 目录下创建新的目录 Helpers。

2. 在 Helpers 目录下创建新的 PHP 文件 ErrorCodes.php。

3. 将您的常量放入该文件中。

<?php define('VALIDATION_ERROR', 'E001'); define('EXCEPTION', 'E002'); define('CUSTOM','E003'); ?>

4.将此ErrorCodes文件添加到composer.json的autoload部分中

"files" : [
        "app/Helpers/ErrorCodes.php"
    ]

在artisan终端中运行composer autoload命令。
composer dumpautoload

现在您已经设置好在lumen应用程序中使用常量。


0

看起来你在这里谈论两件不同的事情。对于配置值,唯一正确的位置是.env文件(如评论中已经提到的)。

https://lumen.laravel.com/docs/5.5/configuration#environment-configuration

这是您放置所有环境特定配置值的位置(例如API密钥、调试模式等等)。如果您非常希望,可以在引导过程中将env变量放入常量中,例如:

define('APP_DEBUG',env('APP_DEBUG', true));

定义简单常量应该有多种可能。
您可以在引导过程中执行此操作,也可以定义一个类(例如模型):
class Error
{
    const FATAL = 1;
    const WARNING = 2;
}


use Error;

....
Error::FATAL;
...

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接