在Laravel项目中集中常量

时间:2018-12-18 15:45:15

标签: php laravel interface constants

在项目中,我经常需要处理常量,而我从不支持像这样对它们进行硬编码

if (status === 2) { // do something }    

因此,我需要集中这些常量,以便为它们赋予一个易于读取的名称,例如STATUS_SUCCESS,并在整个项目中使用该常量。

我的第一个问题是,在laravel项目中制作,放置和使用它们的最佳方法是什么?

我看到人们在应用程序内创建一个Enums文件夹并在其中建立相关界面。

interface Ticket {
  const STATUS_OPEN = 1;
}

//Use like
if (status === Ticket::STATUS_OPEN) {// do something}

第二个问题是,此枚举方法的有效性和相关性为何?为什么? 谢谢。

1 个答案:

答案 0 :(得分:1)

我建议您在config文件夹中创建一个名为 constants.php 的文件,并在其中定义常量,并使用config在整个应用程序中使用它们。该文件的内容将是

return [
    'options' => [
        'option_attachment' => '13',
        'option_email' => '14',
        'option_monetery' => '15',
        'option_ratings' => '16',
        'option_textarea' => '17',
    ]
];

并使用以下代码访问它们

Config::get('constants.options');
// or if you want a specific one
Config::get('constants.options.option_attachment');

为简单起见,请勿制作嵌套的常量数组。

然后我认为最好的方法是用常量创建一个类

class Constant
{
    const DRAFT = 1;
    const PUBLISHED = 2;
    const DELETED = 3;
}

您将使用:

echo Constant::DRAFT;