Più tratti in OOP in PHP
In una classe è possibile utilizzare non uno, ma diversi
tratti. In questo si manifesta il loro vantaggio
rispetto all'ereditarietà. I tratti necessari per l'utilizzo
nella classe possono essere specificati separati da virgola
dopo la parola chiave use.
Vediamo un esempio. Supponiamo di avere due tratti. Il primo:
<?php
trait Helper1
{
private $name;
public function getName()
{
return $this->name;
}
}
?>
Il secondo:
<?php
trait Helper2
{
private $age;
public function getAge()
{
return $this->age;
}
}
?>
Utilizziamo i nostri tratti in una classe:
<?php
class User
{
use Helper1, Helper2; // colleghiamo i tratti
public function __construct($name, $age)
{
$this->name = $name;
$this->age = $age;
}
}
?>
Create 3 tratti con i nomi Trait1,
Trait2 e Trait3. Lasciate che nel primo
tratto ci sia un metodo method1, che restituisce
1, nel secondo tratto - un metodo method2,
che restituisce 2, e nel terzo tratto
- un metodo method3, che restituisce 3.
Lasciate che tutti questi metodi siano privati.
Create una classe Test, che utilizza
tutti e tre i tratti da noi creati. Create in
questa classe un metodo pubblico getSum,
che restituisce la somma dei risultati dei metodi dei tratti
collegati.