Laravel имеет множество конфигурационных файлов в application/config для настройки всех возможностей, предоставляемых этой средой. Но вам ведь хочется создать собственный файл настроек? Сегодня у вас удачный день, потому что я расскажу вам, как это делается.
Cоздание файлов
Файлы натроек Laravel — обычные скрипты на PHP, хранящиеся в application/config или в одной из подпапок. Они возвращают массив значений — например:
// application/config/ourconfig.php
return array(
'size' => 6,
'eat' => true,
);
Вы можете добавлять комментарии, чтобы сделать их более понятными. Лично мне нравится использовать комментарии в стиле Laravel, к примеру:
// application/config/ourconfig.php
return array(
/*
|------------------------------
| Размер
|------------------------------
|
| Это размер той штуковины.
|
*/
'size' => 6,
);
Я уверен, что вы можете придумать описание получше! Как вы уже наверняка заметили конфигурационные файлы Laravel — это набор пар PHPключ => значение
, где ключ массива — имя опции, а значение… собственно, её значение.
Опция может иметь значение любого типа PHP, включя объекты и анонимные функции («closure»). Используя последние вы позволяете пользователю легко менять настройки, загружая их по требованию откуда-то из другого источника, например:
// application/config/ourconfig.php
return array(
/*
|------------------------------
| Size
|------------------------------
|
| This is the size of my thing.
|
*/
'size' => function () {
$size = file_get_contents('path/to/file.json');
$size = json_decode($size);
return $size;
},
);
Теперь значение опции size будет читаться из JSON-файла.
Видимо, автор забыл упомянуть, что «ленивая» загрузка будет работать только если это предусмотрено в коде приложения — обычно с помощью вызова стандартной функции Laravel PHPvalue()
.
Чтение настроек
Мы можем прочитать значение опции используя метод get():
$option = Config::get('ourconfig.size');
Он принимает строку, где первым идёт имя файла, затем точка (.), а затем имя опции для чтения. Если ваш файл находится в подпапке, добавьте их, разделяя точками:
$option = Config::get('ourconfig.sub.directory.size');
Иногда может пригодится получить весь массив настроек разом — для этого просто укажите имя файла без имени опции:
$option = Config::get('ourconfig');
Установка значений
Для задания определённого значения какой-либо опции используется метод set(). Первый параметр — обычный путь к файлу и/или опции (как и для PHPget()
), второй — её новое значение:
Config::set('ourconfig.size', 7);
Заметьте, что если эта опция существует в файле настроек, то она будет перезаписана для текущего запроса — но она не будет изменена в самом файле. То же самое происходит, если опция не существовала до вызова PHPset()
— она будет создана, но файл настроек останется неизменным.
Старайтесь выносить как можно больше настроек из вашего приложения в конфигурационные файлы — впоследствии вам будет гораздо проще его поддерживать и распространять.
Комментарии (1)
(delete)