⊗ppOpTrInr 77 of 107 menu

Traituri în OOP în PHP

După cum știți deja, în PHP nu puteți moșteni de la mai multe clase simultan, doar de la una. Anterior am discutat deja soluția acestei probleme: în loc de moștenire, să folosim obiecte unor clase în interiorul altora.

În PHP există și o altă metodă. Aceasta constă în utilizarea traiturilor. Un trait reprezintă un set de proprietăți și metode care pot fi incluse într-o altă clasă. În acest caz, proprietățile și metodele traitului vor fi percepute de clasă ca și cum ar fi ale sale.

Sintaxa unui trait este aceeași ca și a unei clase, cu excepția faptului că numele traitului trebuie să fie declarat folosind cuvântul cheie trait.

Nu puteți crea o instanță a unui trait - traiturile sunt destinate doar conectării la alte clase. Conectarea în sine se realizează cu ajutorul comenzii use, după care se indică prin spațiu numele traitului de conectat. Această comandă se scrie la începutul clasei.

Să vedem aplicarea traiturilor pe un exemplu practic. Să presupunem că avem dat acest trait Helper, conținând proprietățile private name și age, precum și gettere pentru acestea:

<?php trait Helper { private $name; private $age; public function getName() { return $this->name; } public function getAge() { return $this->age; } } ?>

Să presupunem că avem și această clasă User, în constructorul căreia sunt setate proprietățile name și age:

<?php class User { public function __construct($name, $age) { $this->name = $name; $this->age = $age; } } ?>

Acum să adăugăm gettere pentru proprietățile clasei noastre User. Doar că nu le vom scrie în clasa în sine, ci pur și simplu vom conecta traitul Helper, în care aceste metode sunt deja implementate:

<?php class User { use Helper; // conectăm traitul public function __construct($name, $age) { $this->name = $name; $this->age = $age; } } ?>

După conectarea traitului, în clasa noastră vor apărea metodele și proprietățile acestui trait. În acest caz ne vom adresa la ele ca și cum ar fi metode și proprietăți ale clasei în sine:

<?php $user = new User('john', 30); echo $user->getName(); // va afișa 'john' echo $user->getAge(); // va afișa 30 ?>

Implementați clasa City cu proprietățile name, age, population și gettere pentru acestea. Să presupunem că clasa noastră pentru a-și scurta codul folosește traitul deja creat de noi Helper.

Română
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Folosim cookie pentru funcționarea site-ului, analiză și personalizare. Prelucrarea datelor are loc în conformitate cu Politica de confidențialitate.
acceptă toate configurează respinge