Какова наилучшая практика добавления констант в laravel? (Длинный перечень)

Я новичок в laravel. У меня есть основной вопрос: как лучше всего добавить константы в laravel. Я знаю метод .env, который мы используем для добавления констант. Также я сделал один файл констант, чтобы использовать их для моего проекта. Например:

define('OPTION_ATTACHMENT', 13);
define('OPTION_EMAIL', 14);
define('OPTION_MONETERY', 15);
define('OPTION_RATINGS', 16);
define('OPTION_TEXTAREA', 17);

И так далее. Он может достигать 100 или более записей. Итак, какой должен быть лучший подход для записи констант. Метод .env. Или добавить файл constant.php?

Спасибо

Ответ 1

Для большинства констант, используемых глобально в приложении, достаточно хранить их в файлах конфигурации. Это также довольно просто

Создайте новый файл в каталоге config. Позвольте называть его constants.php

В этом случае вы должны вернуть массив значений конфигурации.

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');

Ответ 2

Я использую псевдонимы класса:

Сначала создайте свой класс, содержащий ваши константы: App/MyApp.php для App/MyApp.php

namespace App;

class MyApp {
   const MYCONST = 'val';
}

Затем добавьте его в псевдонимы классов в config/app.php

'aliases' => [
  //...
  'MyApp' => App\MyApp::class,

Наконец, используйте их, где хотите (контроллеры или даже лезвия):

MyApp::MYCONST

Ответ 3

Ваш вопрос касался "лучших практик", и вы спросили о методе ".env".

.env только для переменных, которые меняются, потому что изменяется среда. Примеры различных сред: испытание, принятие, производство.

Таким образом,.env содержит учетные данные базы данных, ключи API и т.д.

..env should (imho) никогда не содержит константы, которые одинаковы во всех средах. Для этого используйте предлагаемые файлы конфигурации.

Ответ 4

Вы можете создать файл с именем paths.php в корневом каталоге /config/paths.php

Вставьте эти данные в paths.php

define('OPTION_ATTACHMENT', 13);
define('OPTION_EMAIL', 14);
define('OPTION_MONETERY', 15);
define('OPTION_RATINGS', 16);
define('OPTION_TEXTAREA', 17);

Примечание: обязательно запустите команду: php artisan config:clear

Ответ 5

Сначала вы создаете папку Constants внутри вашего каталога приложений.

И затем вы делаете Constants.php. Определите свои константы в этом файле

Пример:

define('ONE', '1');
define('TWO', '2');

И вы изменяете composer.json

В качестве альтернативы вы можете использовать composer.json для загрузки файла bootstrap/constants.php, добавив следующий код в раздел "автозагрузка", например:

"autoload": {
    "files": [
        "bootstrap/constants.php"
    ]
}

И обновите свой композитор!

Ответ 6

В дополнение к ответу Аруна Сингха я бы порекомендовал вам использовать помощников.

Внутри вашего helper.php вы можете определить

if ( ! function_exists('constants'))
{
    function constants($key)
    {
       return config('constants.' . $key);
    }
}

Таким образом, вместо

Config::get('constants.options');
Config::get('constants.options.option_attachment');

ты можешь позвонить

constants('options');
constants('options.option_attachment');

Ответ 7

Другой способ следующим образом:

  1. создайте файл constant.php в каталоге app/config
  2. в файле composer.json добавьте директивы, например так:

    "autoload": {
       "classmap": [
           "database/seeds",
           "database/factories"
       ],
       "psr-4": {
           "App\\": "app/"
       },
       "files": [
           "app/helpers.php",
           "app/config/constants.php"
       ]
    }