⊗ppOpTrInr 77 of 107 menu

Značilnosti (Traits) v OOP v PHP

Kot že veste, v PHP ni mogoče podedovati od več razredov hkrati, le od enega. Prej smo že obravnavali rešitev te težave: namesto dedovanja uporabimo objekte enih razredov znotraj drugih.

V PHP obstaja še en način. Gre za uporabo značilnosti (traits). Značilnost predstavlja niz lastnosti in metod, ki jih je mogoče vključiti v drug razred. Pri tem bodo lastnosti in metode značilnosti razred dojemal kot da so njegove.

Sintaksa značilnosti je enaka kot pri razredu, z izjemo tega, da je ime značilnosti treba deklarirati s ključno besedo trait.

Primerka značilnosti ni mogoče ustvariti - značilnosti so namenjene le priklopu na druge razrede. Samo povezovanje se izvede z ukazom use, za katerim presledek je navedeno ime priklopljene značilnosti. Ta ukaz je zapisan na začetku razreda.

Poglejmo si uporabo značilnosti na praktičnem primeru. Naj imamo dano takšno značilnost Helper, ki vsebuje zasebne lastnosti name in age, ter njihove getterje:

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

Naj imamo tudi tak razred User, v katerega konstruktorju so nastavljene lastnosti name in age:

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

Dodajmo zdaj getterje za lastnosti našega razreda User. Vendar jih ne bomo zapisali v samem razredu, ampak bomo preprosto priklopili značilnost Helper, v kateri so te metode že implementirane:

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

Po priklopu značilnosti se bodo v našem razredu pojavile metode in lastnosti te značilnosti. Pri tem se bomo do njih obračali, kot da so metode in lastnosti samega razreda:

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

Implementirajte razred City z lastnostmi name, age, population in getterji zanje. Naj naš razred za skrajšanje svoje kode uporablja že ustvarjeno značilnost 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
Za delovanje spletnega mesta, analitiko in personalizacijo uporabljamo piškotke. Obdelava podatkov poteka v skladu s Politiko zasebnosti.
sprejmi vse nastavi zavrni