PHP OOP - Tratti
PHP - Cosa sono i tratti?
PHP supporta solo l'ereditarietà singola: una classe figlia può ereditare solo da un solo genitore.
Quindi, cosa succede se una classe deve ereditare più comportamenti? I tratti OOP risolvono questo problema.
I tratti vengono utilizzati per dichiarare metodi che possono essere utilizzati in più classi. I tratti possono avere metodi e metodi astratti che possono essere utilizzati in più classi e i metodi possono avere qualsiasi modificatore di accesso (pubblico, privato o protetto).
I tratti sono dichiarati con la trait
parola chiave:
Sintassi
<?php
trait TraitName {
// some code...
}
?>
Per usare un tratto in una classe, usa la
use
parola chiave:
Sintassi
<?php
class MyClass {
use TraitName;
}
?>
Diamo un'occhiata a un esempio:
Esempio
<?php
trait message1 {
public function msg1() {
echo "OOP is fun! ";
}
}
class Welcome {
use
message1;
}
$obj = new Welcome();
$obj->msg1();
?>
Esempio spiegato
Qui dichiariamo un tratto: message1. Quindi, creiamo una classe: Benvenuto. La classe usa il tratto e tutti i metodi nel tratto saranno disponibili nella classe.
Se altre classi devono usare la funzione msg1(), usa semplicemente il tratto message1 in quelle classi. Ciò riduce la duplicazione del codice, poiché non è necessario dichiarare nuovamente lo stesso metodo più e più volte.
PHP - Utilizzo di più tratti
Diamo un'occhiata a un altro esempio:
Esempio
<?php
trait message1 {
public function msg1() {
echo "OOP is fun! ";
}
}
trait message2 {
public function msg2()
{
echo "OOP reduces code duplication!";
}
}
class Welcome {
use message1;
}
class Welcome2 {
use message1, message2;
}
$obj = new Welcome();
$obj->msg1();
echo "<br>";
$obj2 =
new Welcome2();
$obj2->msg1();
$obj2->msg2();
?>
Esempio spiegato
Qui dichiariamo due tratti: messaggio1 e messaggio2. Quindi, creiamo due classi: Welcome e Welcome2. La prima classe (Welcome) usa il tratto message1 e la seconda classe (Welcome2) usa sia il tratto message1 che message2 (più tratti sono separati da virgola).