⊗ppOpTrInr 77 of 107 menu

Traidid OOP-s PHP-s

Nagu te juba teate, PHP-s ei saa mitmest klassist korraga pärida, vaid ainult ühest. Varem oleme juba läbinud selle probleemi lahenduse: pärimise asemel kasutada ühe klassi objekte teiste klasside sees.

PHP-s on ka teine viis. See seisneb traitide kasutamises. Trait esindab omaduste ja meetodite kogumit, mida saab kaasata teise klassi. Sel juhul omadused ja trait'i meetodeid käsitletakse klassi poolt nagu omi.

Trait'i süntaks on sama mis klassil, välja arvatud see, et trait'i nimi tuleb deklareerida võtmesõnaga trait.

Trait'i eksemplari ei saa luua - trait'id on mõeldud ainult teistesse klassidesse ühendamiseks. Ühendamine toimub käsuga use, mille järel tühikuga eraldatuna märgitakse ühendatava trait'i nimi. See käsk kirjutatakse klassi algusesse.

Vaatame trait'ide rakendamist praktilisel näitel. Olgu meil antud selline trait Helper, mis sisaldab privaatseid omadusi name ja age, ning nende getter'eid:

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

Olgu meil ka selline klass User, mille konstruktoris määratakse omadused name ja age:

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

Lisame nüüd getter'id omaduste jaoks meie klassis User. Ärme aga kirjuta need klassi enda sisse, vaid lihtsalt ühendame trait'i Helper, kus need meetodid on juba realiseeritud:

<?php class User { use Helper; // ühendame trait'i public function __construct($name, $age) { $this->name = $name; $this->age = $age; } } ?>

Pärast trait'i ühendamist ilmuvad meie klassi selle trait'i meetodid ja omadused. Pealegi pöördume me nende poole nagu klassi enda meetodite ja omaduste poole:

<?php $user = new User('john', 30); echo $user->getName(); // väljastab 'john' echo $user->getAge(); // väljastab 30 ?>

Realiseerige klass City omadustega name, age, population ja nende jaoks getter'itega. Olgu meie klass oma koodi lühendamiseks kasutab juba meie poolt loodud trait'i Helper.

Eesti
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Me kasutame saidi toimimiseks, analüüsi ja personaliseerimiseks küpsiseid. Andmete töötlemine toimub vastavalt Privaatsuspoliitikale.
nõustu kõigega häälesta keeldu