🚀 Nuova versione beta disponibile! Feedback o problemi? Contattaci

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!
?>