⊗ppOpTrInr 77 of 107 menu

Trejti u OOP u PHP

Kao što već znate, u PHP-u ne možete naslediti od više klasa istovremeno, samo od jedne. Ranije smo već prolazili kroz rešenje ovog problema: umesto nasleđivanja koristiti objekte jednih klasa unutar drugih.

U PHP-u postoji i drugi način. On se sastoji u korišćenju trejtova. Trejt predstavlja skup svojstava i metoda koji se mogu uključiti u drugu klasu. Pri tome svojstva i metode trejta će se od strane klase doživljavati kao sopstveni.

Sintaksa trejta je ista kao i kod klase, izuzev što ime trejta treba deklarisati pomoću ključne reči trait.

Instancu trejta ne možete kreirati - trejtovi su namenjeni samo za povezivanje sa drugim klasama. Samo povezivanje se vrši pomoću komande use, nakon koje se razmakom navodi ime trejta za povezivanje. Ova komanda se piše na početku klase.

Hajde da pogledamo primenu trejtova na praktičnom primeru. Neka nam je dat ovakav trejt Helper, koji sadrži privatna svojstva name i age, kao i njihove getere:

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

Neka imamo i ovakvu klasu User, u čijem konstruktoru se postavljaju svojstva name i age:

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

Hajde sada da dodamo getere za svojstva naše klase User. Samo nećemo ih zapisati u samoj klasi, već ćemo jednostavno povezati trejt Helper, u kome su ove metode već implementirane:

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

Nakon povezivanja trejta u našoj klasi će se pojaviti metode i svojstva ovog trejta. Pritom obraćaćemo im se kao metodama i svojstvima same klase:

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

Implementirajte klasu City sa svojstvima name, age, population i geterima za njih. Neka naša klasa za skraćivanje svog koda koristi već kreirani trejt Helper.

Srpski
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Koristimo kolačiće za rad sajta, analitiku i personalizaciju. Obrada podataka se vrši u skladu sa Politikom privatnosti.
prihvati sve podesi odbij