Laravel Attribute Code Generators
Open Source

Laravel Attribute Code Generators

Klient: Open Source Product Rok: 2025 Czas realizacji: 1 month
Zobacz na GitHub

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

PHP 8.2+LaravelPHPUnitPest

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

E-mail

kontakt@predator-studio.pl