Un parametro array viene verificato da PHP, ma non impone il tipo di ciascun elemento. PHPDoc aiuta IDE e analizzatori statici a descrivere una collezione:
/** @param Reservation[] $reservations */
function printReservations(array $reservations): void
{
foreach ($reservations as $reservation) {
echo $reservation->getName();
}
}Reservation rappresenta la classe del tuo progetto: importala con use o usa il nome completo. Il commento non crea un controllo a runtime; per input non fidati verifica esplicitamente ogni oggetto o costruisci una collezione che garantisca il vincolo.
Quando il tipo non può essere dedotto, l’annotazione locale corretta è:
/** @var Reservation $reservation */Il tipo precede il nome della variabile. È meglio descrivere correttamente la funzione che restituisce la collezione anziché aggiungere annotazioni locali per mascherare un tipo errato. Nei tool che lo supportano, list<Reservation> distingue una lista con chiavi consecutive da un array generico.
Un esempio eseguibile
In un file PHP 8 definisci questa classe prima della funzione printReservations mostrata sopra:
final class Reservation
{
public function __construct(private string $name) {}
public function getName(): string { return $this->name; }
}Dopo la funzione chiama printReservations([new Reservation("Camera 1")]);. Eseguendo il file da terminale devi leggere Camera 1; nell’IDE il completamento di getName deve essere disponibile dentro foreach. La prova dimostra separatamente l’esecuzione PHP e l’assistenza dell’IDE, non un controllo runtime degli elementi tramite PHPDoc.