Laravel Attribute Code Generators
O projekcie
Laravel Attribute Code Generators to paczka, która pozwala opisać cały scaffold aplikacji bezpośrednio na modelu Eloquent za pomocą natywnych PHP 8.2 Attributes. Jedna komenda `php artisan crud:sync` odczytuje każdy model w projekcie, analizuje jego atrybuty i generuje tylko te pliki, których potrzebujesz — bez nadmiarowego kodu, bez pisania boilerplate'u ręcznie.
Nasze rozwiązanie
Zaprojektowano system atrybutów PHP, który działa jako deklaratywna konfiguracja scaffoldu. Pakiet obsługuje kolejne uruchomienia idempotentnie — pomija już wygenerowane artefakty. W przypadku dodania nowych kolumn do `fields()` generuje wyłącznie migrację ALTER zamiast nadpisywać istniejącą. Dostępny jest tryb `--dry-run` do podglądu planu bez zapisu na dysk.
Moduły systemu
Scaffold z jednej komendy
`php artisan crud:sync` skanuje wszystkie modele, analizuje atrybuty PHP i generuje pliki tylko dla tych modeli, które zostały opatrzone odpowiednimi atrybutami.
Kontroler, Serwis, Repozytorium
Atrybuty `#[Crud]`, `#[Service]` i `#[Repository]` generują klasy z opcjonalnymi interfejsami i automatycznym bindingiem w kontenerze usług Laravel.
Walidacja z migracji
`#[ValidateFromMigration]` generuje `StoreRequest` i `UpdateRequest` na podstawie kolumn zdefiniowanych w `fields()`. `UpdateRequest` automatycznie dodaje `sometimes` dla semantyki PATCH.
Migracje i ALTER
`#[GenerateMigration]` tworzy migrację `create_*_table`. Na kolejnych uruchomieniach pakiet porównuje obecne kolumny z zapisanym stanem i generuje wyłącznie ALTER migration dla nowych kolumn.
Pole `hidden`
Kolumny oznaczone `hidden: true` w `fields()` są automatycznie wykluczane z zasobów API, DTO i requestów walidacyjnych — bez dodatkowej konfiguracji.
Integracja z Claude Code
`php artisan crud:install --ai` instaluje skill `/describe-attributes` w Claude Code — pełna dokumentacja wszystkich atrybutów dostępna bezpośrednio w IDE.
Technologie
Backend
Wyzwania i rozwiązania
Idempotentność generowania
Problem
Wielokrotne uruchamianie komendy nie może nadpisywać istniejących plików ani generować duplikatów migracji, gdy model się nie zmienił.
Rozwiązanie
Pakiet zapisuje stan wykonanych generowań — przy kolejnym uruchomieniu sprawdza diff między zapisanym stanem a bieżącymi atrybutami i `fields()`, generując wyłącznie brakujące artefakty lub ALTER migracje dla nowych kolumn.
Modyfikacja modelu Eloquent
Problem
Generator czyta model, ale nie powinien go nadpisywać — musi bezpiecznie wstrzykiwać `$fillable`, `$casts` i traity do istniejącej klasy PHP.
Rozwiązanie
Zastosowano `nikic/php-parser` do bezpiecznej analizy i modyfikacji AST pliku modelu — dodawanie właściwości i use-trait bez ryzyka utraty istniejącego kodu.
Galeria
Efekty
- Jeden atrybut PHP na modelu zastępuje dziesiątki ręcznie pisanych plików boilerplate
- Tryb `--dry-run` pozwala podejrzeć plan generowania bez zapisu na dysk
- Automatyczne ALTER migracje przy dodaniu nowych kolumn do fields()
- Generowanie interfejsów serwisów i repozytoriów z auto-bindingiem w kontenerze
- Wsparcie dla PHP 8.2+, Laravel 11/12/13
- Integracja z Claude Code — skill `/describe-attributes` jako dokumentacja inline
Rozpocznij projekt już dziś
Stwórzmy razem coś wielkiego
Masz projekt do omówienia? Napisz lub zadzwoń — chętnie porozmawiam o tym, co chcesz zbudować.
Telefon
+48 530 599 947
kontakt@predator-studio.pl