Какова наилучшая практика добавления констант в 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
Другой способ следующим образом:
- создайте файл constant.php в каталоге app/config
-
в файле composer.json добавьте директивы, например так:
"autoload": {
"classmap": [
"database/seeds",
"database/factories"
],
"psr-4": {
"App\\": "app/"
},
"files": [
"app/helpers.php",
"app/config/constants.php"
]
}