MySQL Java JavaScript PHP Python HTML-CSS C-sharp

Traits

Traits reprezintă un grup de metode care pot fi adăugate în clase. Traits permit definirea blocurilor de funcționalitate și reutilizarea lor multiplă în clase, fără a complica codul claselor care folosesc aceste metode.

Traits sunt definite cu ajutorul cuvântului cheie trait, urmat de numele trait-ului:

trait Printer { }

Traits pot conține doar metode statice și nestatice:

trait Printer
{
   public function printSimpleText($text) { echo "$text<br>"; }
   public function printHeaderText($text) { echo "<h2>$text</h2>"; }
}

Pentru a aplica un trait într-o clasă, se folosește operatorul use, urmat de numele trait-ului:

trait Printer
{
   public function printSimpleText($text) { echo "$text<br>"; }
   public function printHeaderText($text) { echo "<h2>$text</h2>"; }
}

class Message
{
   use Printer;
}
$myMessage = new Message();
$myMessage->printSimpleText("Hello World!");
$myMessage->printHeaderText("Hello PHP 8");

După adăugarea trait-ului cu ajutorul operatorului use, clasa poate utiliza metodele acestuia ca și cum ar fi definite în clasa respectivă.

Trebuie de avut în vedere că la moștenire, metodele trait-ului suprascriu metodele moștenite cu același nume:

class Data
{
   function print() { echo "Print from Data"; }
}
trait Printer
{
   function print() { echo "Print from Printer"; }
}

class Message extends Data
{
   use Printer;
}
$myMessage = new Message();
$myMessage->print();     // Print from Printer

În acest exemplu, clasa Message moștenește clasa Data și utilizează trait-ul Printer. Metoda print() definită în Printer suprascrie metoda print() moștenită din Data, rezultând în afișarea mesajului "Print from Printer".

← Lecția anterioară Lecția următoare →