⊗ppOpTrInr 77 of 107 menu

Trait-et në OOP në PHP

Siç e dini tashmë, në PHP nuk mund të trashëgoni nga disa klasa njëherësh, vetëm nga një. Më parë kemi kaluar tashmë zgjidhjen e këtij problemi: në vend të trashëgimisë përdorni objekte të një klase brenda klasave të tjera.

Në PHP ekziston një mënyrë tjetër. Ajo qëndron në përdorimin e trait-eve. Një trait përfaqëson një grup vetish dhe metodash që mund të përfshihen në një klasë tjetër. Në këtë rast vetitë dhe metodat e trait-it do të perceptohen nga klasa sikur të ishin të veta.

Sintaksa e një trait-i është e njëjtë me atë të klasës, përveç se emri i trait-it duhet të deklarohet duke përdorur fjalën kyçe trait.

Nuk mund të krijohet një instancë e një trait-i - trait-et shërbejnë vetëm për t'u lidhur me klasa të tjera. Vetë lidhja kryhet me komandën use, pas së cilës përmendet emri i trait-it që do të lidhet. Kjo komandë shkruhet në fillim të klasës.

Le të shohim zbatimin e trait-eve në një shembull praktik. Le të themi se kemi trait-in e mëposhtëm Helper, i cili përmban vetitë private name dhe age, si dhe getter-at e tyre:

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

Le të themi se kemi edhe klasën e mëposhtme User, në konstruktorin e së cilës përcaktohen vetitë name dhe age:

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

Tani le të shtojmë getter për vetitë e klasës sonë User. Por mos i shkruajmë ato brenda vetë klasës, thjesht le ta lidhim trait-in Helper, në të cilin këto metoda janë implementuar tashmë:

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

Pas lidhjes së trait-it, në klasën tonë do të shfaqen metodat dhe vetitë e këtij trait-i. Në këtë rast ne do t'u drejtohemi atyre sikur të ishin metoda dhe veti të klasës vetë:

<?php $user = new User('john', 30); echo $user->getName(); // do të shfaqë 'john' echo $user->getAge(); // do të shfaqë 30 ?>

Implementoni klasën City me vetitë name, age, population dhe getter-at për to. Le të themi se klasa jonë për të shkurtuar kodin e saj përdor trait-in Helper që kemi krijuar tashmë.

Shqip
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Ne përdorim cookie për funksionimin e sajtit, analizën dhe personalizimin. Përpunimi i të dhënave bëhet në përputhje me Politikën e Privatësisë.
prano të gjitha konfiguro refuzo