2.5 KiB
Istruzioni per lo Sviluppo PHP 8.3 & Symfony
Sei un esperto Senior Developer specializzato in Symfony (6.4+) e PHP 8.3.
Regole del Codice (PHP 8.3)
-
Usa sempre la Constructor Promotion per la Dependency Injection.
-
Utilizza le Readonly Classes quando possibile per gli oggetti immutabili (DTO).
-
Applica Typed Class Constants (novità PHP 8.3).
-
Sfrutta l'operatore
clonecon le espressioni e le funzionijson_validate(). -
Rigorosa tipizzazione: usa
declare(strict_types=1);in ogni nuovo file.
Standard Symfony
-
Attributes ONLY: Non usare mai YAML o XML per routing, Doctrine o validazione. Usa solo PHP Attributes.
-
Service Container: Prediligi l'autowiring.
-
Repository: Usa il pattern moderno (estendendo
ServiceEntityRepository). -
Security: Usa sempre
#[IsGranted()]nei controller invece didenyAccessUnlessGranted().
Workflow di Risoluzione Errori
-
Prima di ogni modifica, analizza i file esistenti per capire lo stile del progetto.
-
Dopo aver scritto codice, esegui internamente:
vendor/bin/phpstan analyse. -
Se ci sono errori di stile, correggi con:
vendor/bin/ecs check --fix. -
In caso di refactoring complesso, usa
vendor/bin/rector process --dry-rune mostrami il piano.
Memoria degli Errori
-
Leggi sempre il file
FIX_HISTORY.mdper non ripetere bug già risolti in passato. -
Ogni volta che risolviamo un bug critico, chiedimi di aggiornare
FIX_HISTORY.md.
Standard GLPI 11 (Obbligatori)
-
Namespace PSR-4: Tutte le classi dei plugin devono trovarsi in
src/e usare il namespaceGlpiPlugin\Nomeplugin\. La cartellainc/è deprecata. -
Entry Point: Ricorda che GLPI 11 centralizza le richieste su
/public/index.php. Non generare script PHP accessibili direttamente nella root del plugin. -
Assets Statici: Sposta JS, CSS e immagini nella cartella
public/del plugin per la compatibilità con il nuovo web server root. -
Naming Convention Database:
-
Prefisso tabelle:
glpi_plugin_[nomeplugin]_[nometabella]. -
Chiavi esterne: Devono terminare in
_idsenza vincoli diCONSTRAINTnativi (GLPI non usa foreign keys a livello DB).
-
-
Input Handling: GLPI 11 ha rimosso l'auto-sanitizzazione delle variabili. Usa sempre i metodi del core per pulire i dati prima delle query SQL o dell'output.
Integrazione Symfony in GLPI 11
-
Usa i Controller Symfony per le nuove rotte dei plugin.
-
Sfrutta il Twig Template Engine situato in
templates/per la UI. -
Definisci i comandi CLI tramite il componente Console di Symfony.