Salta ai contenuti
Manuale LogoManuale Logo

Ereditarietà, interfacce e trait

Ereditarietà, interfacce e trait sono strumenti utili, ma non servono in ogni programma. Prima prova con classi piccole e metodi chiari. Usali quando risolvono un problema reale.

L’ereditarietà permette a una classe di partire da un’altra classe.

<?php
class Utente {
public function saluta(): string {
return "Ciao";
}
}
class Admin extends Utente {
public function pannello(): string {
return "Area amministrazione";
}
}
$admin = new Admin();
echo $admin->saluta();

Admin eredita da Utente il metodo saluta.

Un’interfaccia descrive i metodi che una classe deve avere.

<?php
interface Notificabile {
public function invia(string $messaggio): void;
}
class Email implements Notificabile {
public function invia(string $messaggio): void {
echo "Email: $messaggio";
}
}

L’interfaccia non spiega come eseguire il lavoro: stabilisce il contratto.

Un trait permette di riusare metodi in più classi.

<?php
trait LoggaAzioni {
public function log(string $messaggio): void {
echo "Log: $messaggio";
}
}
class Ordine {
use LoggaAzioni;
}

Usa extends quando una classe è davvero una versione più specifica di un’altra. Usa un’interfaccia quando classi diverse devono rispettare lo stesso contratto. Usa un trait per condividere piccoli comportamenti, senza costruire una gerarchia complicata.

Il valore di un’interfaccia si vede quando classi diverse possono essere usate nello stesso modo.

<?php
interface Pagabile {
public function paga(float $importo): void;
}
class CartaCredito implements Pagabile {
public function paga(float $importo): void {
echo "Pagamento con carta: $importo";
}
}
class Bonifico implements Pagabile {
public function paga(float $importo): void {
echo "Pagamento con bonifico: $importo";
}
}

Entrambe le classi garantiscono di avere un metodo paga.

Non usare extends solo per riusare due righe di codice. L’ereditarietà crea un legame forte tra classi. Se il legame non rappresenta davvero un rapporto “è un tipo di”, una funzione, una composizione o un trait piccolo possono essere più semplici.

Questi strumenti servono a organizzare progetti più grandi. Se classi semplici e metodi chiari risolvono il problema, resta su quella strada. La semplicità è una scelta tecnica, non una mancanza.