• ModSenior

    [Guida] Traits

    I Traits sono stati introdotti con PHP 5.4, e vengono utilizzati per riutilizzare il codice scritto in classi differenti.
    Per meglio capire cosa sono, e come si usano, faccio un esempio pratico:

    [php]
    <?php
    trait MioTrait {
    public function saluta() {
    echo 'Ciao forum GT!';
    }
    }

    class TheDarkITA {
    use MioTrait;
    }

    $o = new TheDarkITA();
    $o->saluta();
    ?>
    [/php]
    Verrà mostrato in output:

    Ciao forum GT!
    

    È possibile cambiare la visibilità dei metodi facendo:
    [php]
    use MioTrait {saluta as protected;}
    [/php]

    Nel caso in cui abbiamo 2 Traits con i metodi aventi lo stesso nome, possiamo gestire i conflitti in questo modo:
    [php]
    <?php
    trait MioTrait {
    public function saluta() {
    echo 'Ciao forum GT!';
    }
    public function telefona() {
    echo 'Telefono a John!';
    }
    }

    trait MioTrait2 {
    public function saluta() {
    echo 'Ciao da TheDarkITA!';
    }
    public function telefona() {
    echo 'Telefono a Marco!';
    }
    }

    class TheDarkITA {
    use MioTrait, MioTrait2 {
    MioTrait2::saluta insteadof MioTrait;
    MioTrait::telefona insteadof MioTrait2;
    }
    }

    $o = new TheDarkITA();
    $o->saluta();
    $o->telefona();
    ?>
    [/php]

    Mostrerà:

    
    Ciao da TheDarkITA!Telefono a John!