---
name: elixforms-php-common-library
description: >
Documentazione della libreria condivisa PHP common/ del progetto elixForms.
Descrive la classe base ElixFormsComponent, i metodi factory per i campi form,
ElixFormsElement per il layout, QueryParamHelper per i query parameter,
e il pattern di ereditarietà per creare pagine custom.
Attiva questa skill quando lavori sui componenti PHP condivisi, crei nuovi tipi di campo,
modifichi la classe base, o integri con la piattaforma elixForms in PHP.
---
# Libreria Common PHP elixForms
## Panoramica
La cartella `php/common/` contiene la libreria condivisa PHP usata da tutte le pagine custom PHP. È basata su **Bootstrap Italia + HTML nativo** e implementa un sistema di form con campi dinamici, analogo alla libreria React in `react/common/`.
## Architettura delle Classi
```
ElixFormsComponent (classe astratta, PHP 8.0+)
└── SceltaCarrieraPage (classe concreta, in scelta-carriera/index.php)
└── [AltrePageCustom] (classi concrete nelle sotto-cartelle)
```
### Namespace
Tutte le classi usano il namespace PSR-4:
```php
namespace ElixForms\Common;
```
Le pagine importano con:
```php
require_once __DIR__ . '/../../vendor/autoload.php';
use ElixForms\Common\ElixFormsComponent;
```
## File della Libreria
### `ElixFormsComponent.php` (Classe Base Astratta)
Equivalente di `ElixFormsComponentAbstract.tsx` in React.
#### Proprietà
```php
protected array $properties; // Equivalente di IElixFormsComponentProperties
```
Chiavi supportate in `$properties`:
| Chiave | Tipo | Obbligatorio | Descrizione |
|---|---|---|---|
| `moduleName` | string | Sì | Nome del modulo nel breadcrumb |
| `cardTitle` | string | Sì | Titolo della card principale |
| `userDisplayName` | string | No | Nome utente nell'header |
| `headerTitle` | string | No | Titolo sotto il breadcrumb |
| `headerHeroImageSrc` | string | No | URL immagine hero |
| `cardDescription` | string | No | Descrizione nella card |
| `alertInfoTitle` | string | No | Titolo alert informativo |
| `alertInfoMessage` | string | No | Messaggio alert informativo |
| `instructionsTitle` | string | No | Titolo istruzioni |
| `instructionsMessage` | string | No | Messaggio istruzioni |
| `submitText` | string | No | Testo bottone submit (default: 'INVIA') |
| `additionalFieldsJson` | string | No | JSON schema per campi dinamici |
| `isDarkTheme` | bool | No | Tema scuro (riservato per uso futuro) |
#### Metodi Factory (Campi Form)
| Metodo | Tipo Campo | HTML Output |
|---|---|---|
| `createTextInput($name, $label, $required)` | Testo | `` |
| `createTextAreaInput($name, $label, $required)` | Textarea | `