Esercizi Trait PHP
Codegrind Team•Jul 12 2024
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.
<?php
trait 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.
<?php
trait 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`.
<?php
trait 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`.
<?php
trait 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à .
<?php
trait 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.
<?php
trait 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.
<?php
trait 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.
<?php
trait 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.
<?php
trait 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.
<?php
trait 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!
?>