⊗ppOpTrInr 77 of 107 menu

Traity v OOP v PHP

Ako už viete, v PHP nie je možné dediť od viacerých tried naraz, iba od jednej. Predtým sme už prešli riešenie tohto problému: namiesto dedenia používať objekty jedných tried v iných.

V PHP existuje aj iný spôsob. Spočíva v použití traitov. Trait predstavuje súbor vlastností a metód, ktoré je možné zahrnúť do inej triedy. Pričom vlastnosti a metódy traitu budú triedou vnímané ako vlastné.

Syntax traitu je rovnaký ako u triedy, s výnimkou toho, že názov traitu je potrebné deklarovať pomocou kľúčového slova trait.

Inštanciu traitu nie je možné vytvoriť - traity sú určené len na pripojenie k iným triedam. Samotné pripojenie sa vykonáva pomocou príkazu use, za ktorým cez medzeru je uvedený názov pripájaného traitu. Tento príkaz sa píše na začiatku triedy.

Pozrime sa na použitie traitov v praktickom príklade. Predpokladajme, že máme daný takýto trait Helper, obsahujúci privátne vlastnosti name a age, ako aj ich gettery:

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

Predpokladajme, že máme aj takúto triedu User, v ktorej konštruktore sú nastavené vlastnosti name a age:

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

Pridajme teraz gettery pre vlastnosti našej triedy User. Len ich nebudeme zapisovať v samotnej triede, ale jednoducho pripojíme trait Helper, v ktorom sú tieto metódy už implementované:

<?php class User { use Helper; // pripájame trait public function __construct($name, $age) { $this->name = $name; $this->age = $age; } } ?>

Po pripojení traitu sa v našej triede objavia metódy a vlastnosti tohto traitu. Pritom pristupovať k nim budeme ako k metódam a vlastnostiam samotnej triedy:

<?php $user = new User('john', 30); echo $user->getName(); // vypíše 'john' echo $user->getAge(); // vypíše 30 ?>

Implementujte triedu City s vlastnosťami name, age, population a gettermi pre ne. Nech naša trieda pre skrátenie svojho kódu používa už nami vytvorený trait Helper.

Slovenčina
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Používame cookies na fungovanie stránky, analýzu a personalizáciu. Spracúvanie údajov prebieha v súlade s Politikou ochrany osobných údajov.
prijať všetky nastaviť odmietnuť