Ця публікація покаже вам, як налаштувати заглушки, які використовуються для створення різних класів у вашій програмі. Хоча це незначна незручність, ручне коригування кожного згенерованого класу може бути виснажливим, і 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
{
//
}
A Sane Approach
Припустімо, що ви хочете додати коментар про авторські права до кожного файлу, створеного у вашій програмі Laravel.У такому випадку ви можете розглянути можливість створення версій для всіх доступних заглушок і під час оновлення виконати команду stub:publish
, щоб отримати щойно додані заглушки.
< p>Проте для типових випадків використання, можливо, ви можете лише версії заглушок, які потрібно налаштувати. Наприклад, припустимо, що ви не хочете, щоб будь-які контролери розширювали базовий клас 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 */