Ten post pokaże Ci, jak dostosować skróty używane do generowania różnych klas w Twojej aplikacji. Chociaż jest to niewielka niedogodność, ręczne dostosowywanie każdej wygenerowanej klasy może być żmudne, a Laravel zapewnia programistom sposób na publikowanie i wersjonowanie stubów w aplikacji, jeśli chcesz dopasować wygenerowane klasy do swojego gustu.
Jeśli chcesz kontynuować, możesz utworzyć nowy projekt Laravel za pomocą instalatora Laravel , używając Sail lub w jakikolwiek inny sposób, w jaki wolisz utworzyć nową aplikację:
Być może zauważyłeś, że Instalator Laravela obsługuje teraz integrację Git i GitHubzakładając, że masz minimalną wymaganą wersję git, powinieneś mieć nowe repozytorium i pierwsze zatwierdzenie.
laravel new stub-demo --git
Wersjonowanie naszego projektu demo to doskonały sposób na wizualizację zmian, które twórz po drodze i zobacz, jakie pliki Laravel publikuje w aplikacji.
Publikowanie
Pierwszym krokiem w dostosowywaniu odcinków może być dodanie odcinków, które chcesz dostosować indywidualnie do folderu /stubs
w katalogu głównym projektu Laravel, lub możesz opublikować je wszystkie za pomocą Artisan:</ p>
Jak widać, mamy sporo stubów opublikowanych w folderze app
!Zostawię to Tobie, jeśli chcesz je wszystkie wersjonować, ale możesz zachować ich kopię lub zachować tylko te fragmenty, które chcesz dostosować.
$ 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
Niestandardowe skróty kontrolera
Laravel 8.36 wprowadził ideę --type
flaga podczas tworzenia kontrolera, umożliwiająca pisanie niestandardowych plików pośredniczących do generowania kontrolera:
Po dodaniu niestandardowej klasy pośredniczącej możesz wygenerować kontroler przy użyciu tego szablonu:
<?php
// stubs/controller.custom.stub
namespace {{ namespace }};
use {{ rootNamespace }}Http\Controllers\Controller;
use Illuminate\Http\Request;
/**
* Hello from the custom controller stub
*/
class {{ class }}
{
//
}
Który wygeneruje następujący plik kontrolera:
php artisan make:controller --type=custom MyController
Chociaż ten poziom elastyczności jest fajny, wierzę, że najbardziej programiści mogą zmieścić się w granicach odgałęzień dostarczonych przez framework.Użycie nowej flagi --type
to ręczny sposób wyboru szablonu kontrolera, który chcesz wygenerować:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
/**
* Hello from the custom controller stub
*/
class MyController
{
//
}
Który wygeneruje plik na podstawie w pliku stubs/controller.plain.stub
opublikowanym przez Laravela:
php artisan make:controller --type=plain PlainController
Rozsądne podejście
Załóżmy, że chcesz dołączyć komentarz dotyczący praw autorskich do każdego pliku wygenerowanego w Twojej aplikacji Laravel.W takim przypadku możesz rozważyć przechowywanie wersji wszystkich dostępnych kodów pośredniczących, a podczas aktualizacji uruchom polecenie stub:publish
, aby uzyskać nowo dodane kody pośredniczące.
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class PlainController extends Controller
{
//
}
< p> Jednak w typowych przypadkach użycia możesz być może tylko wersjonować tylko te skróty, które musisz dostosować. Załóżmy na przykład, że nie chcesz, aby jakiekolwiek kontrolery rozszerzały podstawową klasę Controller
; możesz wersjonować cały kontroler.* odcinki z Twoimi dostosowaniami, ale usuń wszystkie inne odcinki.
Co jeśli odcinki zmienią się w górę?
Powiedzmy, że tworzysz wersje wszystkich kodów pośredniczących z stub:publish
, ale obawiasz się, że framework Laravel otrzymuje aktualizacje podstawowych plików pośredniczących, Twojej aplikacji będzie nieaktualny.Jeśli wersjonujesz wszystkie skróty, zawsze możesz wymusić aktualizację, aby uzyskać najnowsze wersje.
Weźmy to na przykład, zmodyfikujmy skrót i zatwierdźmy go w Git:< /p> Zaktualizowałeś kod testowy i zatwierdziłeś aktualizację do Git. Załóżmy, że później Laravel publikuje kilka aktualizacji dla stubów i chcesz sprawdzić, czy jakieś się zmieniły:
Masz łatwy sposób, aby zobaczyć, jak twoje stuby odeszły od bazy kodu Laravela z biegiem czasu! Ponieważ kody pośredniczące są wersjonowane, możesz po prostu cofnąć zmiany, flaga --force
powoduje, że musisz scalić zmiany z najnowszymi zmianami pośredniczącymi.
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 */