- Esercizio 1: Creare e Usare un Trait
- Esercizio 2: Trait con Metodo Privato
- Esercizio 3: Risoluzione dei Conflitti
- Esercizio 4: Alias di Metodi
- Esercizio 5: Trait con ProprietÃ
- Esercizio 6: Trait con Costruttore
- Esercizio 7: Utilizzare Più Trait
- Esercizio 8: Sostituire Metodi di un Trait
- Esercizio 9: Ereditare una Classe con Trait
- Esercizio 10: Trait con Metodi Astratti
Ecco degli esercizi con soluzione per praticare l’uso dei Trait in PHP.
Esercizio 1: Creare e Usare un Trait
Creare un trait e utilizzarlo in una classe.
<?phptrait Saluto { public function saluta() { echo "Ciao, mondo!"; }}
class Persona { use Saluto;}
$persona = new Persona();$persona->saluta(); // Output: Ciao, mondo!?>
Esercizio 2: Trait con Metodo Privato
Creare un trait con un metodo privato e utilizzarlo in una classe.
<?phptrait Calcoli { private function quadrato($n) { return $n * $n; }
public function stampaQuadrato($n) { echo $this->quadrato($n); }}
class Matematica { use Calcoli;}
$math = new Matematica();$math->stampaQuadrato(4); // Output: 16?>
Esercizio 3: Risoluzione dei Conflitti
Gestire i conflitti tra metodi di due trait utilizzando `insteadof`.
<?phptrait A { public function messaggio() { echo "Messaggio da A"; }}
trait B { public function messaggio() { echo "Messaggio da B"; }}
class Test { use A, B { A::messaggio insteadof B; }}
$test = new Test();$test->messaggio(); // Output: Messaggio da A?>
Esercizio 4: Alias di Metodi
Creare un alias per un metodo di un trait utilizzando `as`.
<?phptrait Saluto { public function saluta() { echo "Ciao, mondo!"; }}
class Persona { use Saluto { saluta as salutaInItaliano; }}
$persona = new Persona();$persona->salutaInItaliano(); // Output: Ciao, mondo!?>
Esercizio 5: Trait con ProprietÃ
Utilizzare un trait con una proprietà .
<?phptrait Contatore { public $contatore = 0;
public function incrementa() { $this->contatore++; }}
class Oggetto { use Contatore;}
$obj = new Oggetto();$obj->incrementa();$obj->incrementa();echo $obj->contatore; // Output: 2?>
Esercizio 6: Trait con Costruttore
Utilizzare un trait con un metodo costruttore.
<?phptrait Inizializzazione { public function __construct() { echo "Oggetto inizializzato."; }}
class Oggetto { use Inizializzazione;}
$obj = new Oggetto(); // Output: Oggetto inizializzato.?>
Esercizio 7: Utilizzare Più Trait
Utilizzare più trait in una classe.
<?phptrait A { public function metodoA() { echo "Metodo A"; }}
trait B { public function metodoB() { echo "Metodo B"; }}
class Test { use A, B;}
$test = new Test();$test->metodoA(); // Output: Metodo A$test->metodoB(); // Output: Metodo B?>
Esercizio 8: Sostituire Metodi di un Trait
Sostituire un metodo di un trait in una classe.
<?phptrait Saluto { public function saluta() { echo "Ciao, mondo!"; }}
class Persona { use Saluto;
public function saluta() { echo "Buongiorno, mondo!"; }}
$persona = new Persona();$persona->saluta(); // Output: Buongiorno, mondo!?>
Esercizio 9: Ereditare una Classe con Trait
Ereditare una classe che utilizza un trait.
<?phptrait Saluto { public function saluta() { echo "Ciao, mondo!"; }}
class Persona { use Saluto;}
class Studente extends Persona { public function studia() { echo "Sto studiando."; }}
$studente = new Studente();$studente->saluta(); // Output: Ciao, mondo!$studente->studia(); // Output: Sto studiando.?>
Esercizio 10: Trait con Metodi Astratti
Definire metodi astratti in un trait e implementarli in una classe.
<?phptrait Azioni { abstract public function saluta(); abstract public function addio();}
class Persona { use Azioni;
public function saluta() { echo "Ciao!"; }
public function addio() { echo "Addio!"; }}
$persona = new Persona();$persona->saluta(); // Output: Ciao!$persona->addio(); // Output: Addio!?>