⊗ppOpTrInr 77 of 107 menu

Treitai OOP PHP

Kaip jau žinote, PHP negalima paveldėti iš kelių klasių iš karto, tik iš vienos. Anksčiau jau nagrinėjome šios problemos sprendimą: užuot paveldėjimą naudoti objektus vienų klasių kituose.

PHP yra ir kitas būdas. Jis susideda iš treitų naudojimo. Treitas atstovauja savybių ir metodų rinkinį, kurį galima įtraukti į kitą klasę. Tuo atveju savybės ir treito metodai bus suvokiami klasės lyg jos pačios.

Treito sintaksė yra tokia pati kaip ir klasės, išskyrus tai, kad treito vardą reikia apibrėžti naudojant raktinį žodį trait.

Treito egzempliorių negalima sukurti - treitai skirti tik prijungimui prie kitų klasių. Pats prijungimas atliekamas naudojant komandą use, po kurios per tarpą nurodomas prijungiamo treito vardas. Ši komanda rašoma klasės pradžioje.

Pažiūrėkime treitų taikymą praktiniame pavyzdyje. Tarkime, kad mums duotas toks treitas Helper, kuriame yra privatūs atributai name ir age, taip pat jų getteriai:

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

Tarkime, kad taip pat turime tokią klasę User, kurios konstruktoriuje nustatomi atributai name ir age:

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

Dabar pridėkime getterius savybėms mūsų klasės User. Tik nerašykime jų pačioje klasėje, o tiesiog prijunkime treitą Helper, kuriame šie metodai jau yra įgyvendinti:

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

Prijungus treitą mūsų klasėje atsiras to treito metodai ir savybės. Be to, kreipsimės į juos lyg į klasės metodus ir savybes:

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

Įgyvendinkite klasę City su savybėmis name, age, population ir jų getteriais. Tegul mūsų klasė sutrumpindama savo kodą naudoja jau mūsų sukurtą treitą Helper.

Lietuvių
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Mes naudojame slapukus svetainės veikimui, analizei ir personalizavimui. Duomenų apdorojimas vyksta pagal Privatumo politiką.
priimti visus nustatyti atšaukti