В проекте мне часто нужно работать с константами, и я никогда не поддерживаю их жесткое кодирование, например
if (status === 2) { // do something }
Итак, мне нужно централизовать эти константы, чтобы я мог дать им читаемое имя, например STATUS_SUCCESS, и использовать константу по всему проекту.
Мой первый вопрос: как лучше всего создать, разместить и использовать их в проекте Laravel?
Я вижу, как люди создают папку Enums внутри приложения и создают соответствующий интерфейс внутри.
interface Ticket {
const STATUS_OPEN = 1;
}
//Use like
if (status === Ticket::STATUS_OPEN) {// do something}
И второй вопрос: насколько эффективен и актуален этот подход enum и почему?
Спасибо.
Я хотел бы предложить вам создать файл с именем constants.php в config
Папка и определить ваши константы там и использовать их во всем приложении, используя 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;
Других решений пока нет …