Как собрать/разработать свой собственный пакет 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/