В этом посте показано, как настраивать заглушки, используемые для создания различных классов в вашем приложении. Несмотря на незначительное неудобство, ручная настройка каждого сгенерированного класса может быть утомительной, и Laravel предоставляет разработчикам возможность публиковать и версионировать заглушки в приложении, если вы хотите, чтобы сгенерированные классы соответствовали вашему конкретному вкусу.
Если вы хотите продолжить, вы можете создать новый проект Laravel с помощью установщика Laravel. , с помощью Sail или любым другим удобным способом для создания нового приложения:
laravel new stub-demo --git
Возможно, вы заметили, что Установщик Laravel теперь поддерживает интеграцию Git и GitHubпредполагая, что у вас есть минимальная требуемая версия git, у вас должен быть новый репозиторий и первая фиксация.
Управление версиями нашего демо-проекта — отличный способ визуализировать заглушки изменений, которые мы сделайте по пути и посмотрите, какие файлы Laravel публикует в приложении.
Публикация заготовок
Первым шагом в настройке заглушек может быть добавление заглушек, которые вы хотите настроить индивидуально, в папку /stubs
в корне проекта Laravel, или вы можете опубликовать их все с помощью Artisan:</ p>
$ php artisan stub:publish
$ git add stubs
$ git status
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
new file: stubs/cast.stub
new file: stubs/console.stub
new file: stubs/controller.api.stub
new file: stubs/controller.invokable.stub
new file: stubs/controller.model.api.stub
new file: stubs/controller.model.stub
new file: stubs/controller.nested.api.stub
new file: stubs/controller.nested.stub
new file: stubs/controller.plain.stub
new file: stubs/controller.stub
new file: stubs/factory.stub
new file: stubs/job.queued.stub
new file: stubs/job.stub
new file: stubs/middleware.stub
new file: stubs/migration.create.stub
new file: stubs/migration.stub
new file: stubs/migration.update.stub
new file: stubs/model.pivot.stub
new file: stubs/model.stub
new file: stubs/observer.plain.stub
new file: stubs/observer.stub
new file: stubs/policy.plain.stub
new file: stubs/policy.stub
new file: stubs/request.stub
new file: stubs/resource-collection.stub
new file: stubs/resource.stub
new file: stubs/rule.stub
new file: stubs/seeder.stub
new file: stubs/test.stub
new file: stubs/test.unit.stub
Как видите, у нас довольно много заготовок, опубликованных в папке app
!Я оставлю это на ваше усмотрение, хотите ли вы создать версию всех из них, но вы можете либо сохранить их копию, либо сохранить только определенные заглушки, которые хотите настроить.
Заглушки пользовательских контроллеров
Laravel 8.36; представил идею --type
флаг при создании контроллера, позволяющий писать пользовательские файлы-заглушки для создания контроллера:
<?php
// stubs/controller.custom.stub
namespace {{ namespace }};
use {{ rootNamespace }}Http\Controllers\Controller;
use Illuminate\Http\Request;
/**
* Hello from the custom controller stub
*/
class {{ class }}
{
//
}
После добавления пользовательского класса-заглушки вы можете создать контроллер, используя этот шаблон:
php artisan make:controller --type=custom MyController
Что сгенерирует следующий файл контроллера:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
/**
* Hello from the custom controller stub
*/
class MyController
{
//
}
Хотя этот уровень гибкости хорош, я считаю, что большинство разработчики могут вписываться в рамки заглушек, предоставляемых фреймворком.Использование нового флага --type
— это ручной способ выбора шаблона контроллера, который вы хотите сгенерировать:
php artisan make:controller --type=plain PlainController
который будет генерировать файл на основе в файле stubs/controller.plain.stub
, опубликованном Laravel:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class PlainController extends Controller
{
//
}
Разумный подход
Предположим, вы хотите добавить комментарий об авторских правах к каждому файлу, созданному в вашем приложении Laravel.В этом случае вы можете рассмотреть возможность создания версий всех доступных заглушек и при обновлении запустить команду stub:publish
, чтобы получить новые добавленные заглушки.
< p>Однако для типичных случаев использования, возможно, вы можете создавать версии только тех заглушек, которые вам нужно настроить. Например, предположим, что вы не хотите, чтобы какие-либо контроллеры расширяли базовый класс Controller
; вы можете верифицировать все controller.*
заглушки с вашими настройками, но удалите все остальные заглушки.
Что, если заглушки изменятся выше по течению?
Допустим, вы версионируете все заглушки из stub:publish
, но вы обеспокоены тем, что по мере того, как платформа Laravel получает обновления основных файлов заглушек, ваше приложение будет устаревшим.Если вы версионируете все заглушки, вы всегда можете принудительно обновить их, чтобы получить последние версии.
Возьмем, к примеру, давайте изменим заглушку и зафиксируем ее в Git:< /p>
Вы обновили тестовую заглушку и зафиксировали обновление в Git. Допустим, позже Laravel публикует некоторые обновления заготовок, и вы хотите проверить, не изменились ли они:
У вас есть простой способ увидеть, как ваши заглушки со временем расходятся с кодовой базой Laravel! Поскольку заглушки имеют версии, вы можете просто отменить изменения, вызванные флагом --force
, если вам нужно объединить ваши изменения с последними изменениями заглушки.
echo "/* test */" >> stubs/test.stub
git commit -am"Testing stub update"
$ php artisan stub:publish --force
$ git diff
diff --git a/stubs/test.stub b/stubs/test.stub
index 834a53d..84c75cb 100644
--- a/stubs/test.stub
+++ b/stubs/test.stub
@@ -20,4 +20,3 @@ class {{ class }} extends TestCase
$response->assertStatus(200);
}
}
-/* test */