Как собрать/разработать свой собственный пакет Laravel
В этом посте вы узнаете, как создать/разработать пакет для Laravel.
Требования
- PHP 7.4 или выше
- Композитор
шаг 1. Создайте каталог
Сначала нам нужно создать каталог для вашего проекта и пакета.
Я назову каталог laravel-package
.
шаг 2. Создайте проект Laravel
Перейдите в каталог внутри терминала, так что в моем случае.
cd laravel-package
Теперь нам нужно добавить проект Laravel с помощью одной из следующих команд.
laravel new project
OR
composer create-project laravel/laravel project
шаг 3. Создайте каталог пакета
Создайте каталог внутри каталога laravel-package
с именем package
шаг 4. Инициализируйте пакет с помощью composer.
Внутри командной строки перейдите в папку с именем вашего пакета. В моем случае package
и выполните следующую команду
composer init
Это инициализирует текущую папку как пакет композитора и задаст вам несколько вопросов по настройке вашего пакета. Когда это будет сделано, это будет выглядеть примерно так
шаг 5. Загрузите свой пакет из вашего проекта Laravel
Перейдите в каталог вашего проекта Laravel и откройте файл с именем composer.json
. Теперь мы можем добавить ваш пакет, добавив следующее
"repositories": [ { "type": "path", "url": "../package" } ],
Запустите следующую команду, где sequally/package
— это имя вашего пакета поставщика, которое можно найти в вашем composer.json
вашего пакета по ключу с именем name
composer require sequally/package
шаг 6. Загрузить сервис-провайдера пакета
В каталоге вашего проекта Laravel мы можем создать вашего ServiceProvider с помощью команды artisan
php artisan make:provider PackageServiceProvider
Теперь внутри каталога app/Providers
есть файл с именем PackageServiceProvider
Давайте переместим этот файл в папку вашего пакета package/src
Не забудьте изменить пространство имен вашего поставщика услуг!
шаг 7. Зарегистрируйте поставщика услуг пакета
Чтобы автоматически зарегистрировать поставщика услуг пакета в проекте Laravel. Мы можем добавить вашего поставщика услуг в дополнительный ключ › laravel › provider в composer.json
вашего пакета, который будет выглядеть примерно так:
шаг 8. Добавьте маршруты пакетов
Чтобы добавить маршруты в свой пакет, вы можете создать каталог с именем routes
внутри каталога package/src
с файлом с именем web.php
внутри. Теперь вы можете добавить маршруты в свой пакет следующим образом
Если вы запустите свой проект laravel с помощью php artisan serve
, вы можете посетить URL-адрес /test
, вы увидите Test!
шаг 9. Добавьте представления пакета
Создайте каталоги с именем resources/views
внутри каталога package/src
. Теперь зарегистрируйте представления с помощью следующего кода внутри файла package/src/PackageServiceProvider.php
в методе с именем boot
.
$this->loadViewsFrom(__DIR__.'/resources/views', 'package');
Второй параметр — это префикс для ваших представлений. Поэтому, когда вы хотите использовать представление внутри вашего проекта или пакета Laravel, вы можете называть его так:
return view('package::test');
где test - это имя вашего представления, когда представление находится внутри каталога, который вы называете следующим образом
return view('package::directory.test');
Давайте создадим файл с именем test.blade.php
внутри каталога resources/views
и добавим внутрь следующий код
<p>Test Page!</p>
Теперь, когда мы можем создавать представления и маршруты, измените тестовый маршрут в web.php
следующим образом.
Теперь, если вы снова запустите свой проект laravel с php artisan serve
, вы можете посетить URL-адрес /test
, и вы увидите
Шаг 10. Добавьте конфигурацию пакета
Создайте каталог с именем config
внутри каталога package/src
.
Создайте файл с именем package.php
внутри этого файла, в который вы можете добавить свои данные конфигурации
Со следующим кодом внутри файла package/src/PackageServiceProvider.php
в методе с именем boot
мы можем опубликовать файл конфигурации в проекте Laravel.
if ($this->app->runningInConsole()) { $this->publishes([ __DIR__.'/config/package.php' => config_path('package.php'), ], 'config'); }
Теперь, если мы перейдем к проекту Laravel внутри терминала и выполним следующую команду, он опубликует файл конфигурации.
php artisan vendor:publish --provider="Sequally\Package\PackageServiceProvider" --tag="config"
шаг 11. Загрузите миграции из пакета
Создайте каталоги database/migrations
внутри каталога package/src
и поместите туда свои миграции. Теперь нам нужно добавить код в package/src/PackageServiceProvider.php
внутри метода boot()
.
$this->loadMigrationsFrom(__DIR__.'/database/migrations');
Теперь, когда вы зайдете в свой проект Laravel внутри терминала и выполните следующую команду php artisan migrate
, она перенесет не только миграции внутри проекта Laravel, но и миграции из вашего пакета!
Конец
Для получения дополнительной информации о разработке пакетов Laravel перейдите по следующей ссылке: https://laravelpackage.com/