Первое, с чего стоит начать разработку модуля, это настройки. В папке config
создается php файл, с именем модуля. В нашем случае пусть это будет mxj-blog.php
. Код должен возвращать массив с переменными. Конфиг используется для настроек модуля. Для начала имеет смысл вынести в конфиг метку модуля для логирования. Это чтобы в общих логах приложения легко находить нужные вам записи. Пример содержимого файла конфига:
return [
'log-prefix' => 'addons.mxj-blog',
];
Регистрируем конфиг в секции register
сервис провайдера:
public function register()
{
…
$this->mergeConfigFrom(__DIR__.'/../config/mxj-blog.php', 'mxj-blog');
…
}
Здесь mxj-blog - перфикс, с помощью которого мы можем обратиться к конфигу. Далее указываем приложению необходимость скопировать конфиг при установке, для этого в секции boot
прописываем
public function boot()
{
…
$this->publishes([
__DIR__.'/../config/mxj-blog.php' => config_path('mxj-blog.php'),
]);
…
}
Теперь после установки модуля можно вызвать команду php artisan vendor:publish
и наш конфиг будет автоматически опубликован среди других файлов конфигурации приложения. Главное, что бы имена файлов не совпали. Тогда запись в лог будет выглядеть так:
use Illuminate\Support\Facades\Log;
…
Log::info(config('mxj-blog.log-prefix'), ['example' => 'message']);
В конфиг пойдут любые настройки, внесение которых позволит быстро настраивать модуль без изменения кода. Выбор таких настроек целиком основывается на здравом смысле. В целом – если неймется завести глобальную переменную, лучше вынесите ее в конфиг.
Команду publish можно использовать для размещения файлов в общем доступе, например, папки с изображениями:
$this->publishes( [__DIR__.'/public' => public_path( 'vendor/blog' )], 'public');
Тут последний аргумент - тег, с помощью которого можно публиковать только определенные файлы или папки:
php artisan vendor:publish --tag=public --force
Если вы используете composer версии более 2.1, то этот процесс можно автоматизировать:
"post-update-cmd": [
"@php artisan vendor:publish --tag=public --force",
...