Treci la conținutul principal

PHP - Ce sunt trăsăturile (traits)?

O trăsătură (trait) este un mod de a partaja metode între clase: scrii metodele o singură dată, iar orice clasă care are nevoie de ele le poate prelua.

Un trait poate conține atât metode obișnuite, cât și metode abstracte, iar aceste metode pot folosi orice modificator de acces (public, private sau protected).

Astfel, trait-urile devin un instrument de reutilizare a codului, deoarece mai multe metode pot fi adăugate liber în multe clase diferite.


Definirea unei trăsături

Începe cu cuvântul cheie trait, apoi dă-i trait-ului un nume:

Sintaxa unei trăsături

Forma de bază a definiției unui trait:

index.php
<?php
trait TraitName {
  // some code...
}
?>

Folosirea trăsăturii

În interiorul unei clase, scrie cuvântul cheie use și numele trait-ului ca să îl incluzi.

Exemplul următor are un trait numit message1 și o clasă numită Welcome care îl folosește. Astfel, toate metodele din trait sunt disponibile în clasă.

Sfat: Orice altă clasă care are nevoie de msg1() poate folosi message1 în același mod. Eviți codul duplicat, pentru că aceeași metodă nu mai trebuie declarată din nou și din nou.

Exemplu

Welcome folosește un trait, așa că obiectele ei pot apela metoda trait-ului:

Prompt
Creează o trăsătură (trait) PHP message1 cu o metodă msg1() care afișează un mesaj. Creează o clasă Welcome care folosește trăsătura. Creează un obiect și apelează msg1().
Ieșire: script PHP

Folosirea unei trăsături într-o clasă

Cum include o clasă un trait:

index.php
<?php
class MyClass {
  use TraitName;
}
?>

PHP - Două clase și o trăsătură

Aici, un singur trait, message1, are trei metode publice, iar două clase, Welcome și Welcome2, îl folosesc. Ambele clase primesc toate cele trei metode, dar nu trebuie să le apeleze pe toate: codul apelează doar una pe Welcome și toate trei pe Welcome2.

Exemplu

Același trait servește două clase, care apelează metode diferite din el:

Prompt
Creează o trăsătură (trait) PHP message1 cu trei metode publice msg1(), msg2() și msg3(). Creează clasele Welcome și Welcome2, ambele folosind trăsătura. Welcome folosește doar msg1(), în timp ce Welcome2 folosește toate cele trei metode.
Ieșire: script PHP

PHP - Folosirea mai multor trăsături

O clasă nu este limitată la un singur trait. Acest exemplu are două trait-uri, message1 și message2, și două clase. Welcome folosește doar message1, în timp ce Welcome2 le folosește pe amândouă, cu o virgulă între numele trait-urilor.

Exemplu

Welcome2 enumeră două trait-uri, separate prin virgulă:

Prompt
Creează două trăsături (traits) PHP message1 și message2 cu metodele msg1() și, respectiv, msg2(). Creează Welcome folosind doar message1 și Welcome2 folosind ambele trăsături. Creează obiecte și apelează metodele.
Ieșire: script PHP