• Час читання ~4 хв
  • 25.08.2022

Ця публікація покаже вам, як налаштувати заглушки, які використовуються для створення різних класів у вашій програмі. Хоча це незначна незручність, ручне коригування кожного згенерованого класу може бути виснажливим, і 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 */

Comments

No comments yet
Yurij Finiv

Yurij Finiv

Full stack

Про мене

Professional Fullstack Developer with extensive experience in website and desktop application development. Proficient in a wide range of tools and technologies, including Bootstrap, Tailwind, HTML5, CSS3, PUG, JavaScript, Alpine.js, jQuery, PHP, MODX, and Node.js. Skilled in website development using Symfony, MODX, and Laravel. Experience: Contributed to the development and translation of MODX3 i...

Про автора CrazyBoy49z
WORK EXPERIENCE
Контакти
Ukraine, Lutsk
+380979856297