⊗ppOpTrInr 77 of 107 menu

Traitok az OOP-ben PHP-ben

Mint már tudjátok, a PHP-ben nem lehet egyszerre több osztálytól örökölni, csak egyetől. Korábban már átvettük ennek a problémának a megoldását: öröklés helyett használjunk objektumokat egyes osztályokban mások belsejében.

A PHP-ben van egy másik módszer is. Ez a traitok használatában rejlik. A trait olyan tulajdonságok és metódusok gyűjteménye, amelyek belefoglalhatók egy másik osztályba. Ebben az esetben a trait tulajdonságai és metódusai úgy fognak viselkedni az osztály számára, mintha a sajátjai lennének.

A trait szintaxisa ugyanaz, mint az osztályé, kivéve, hogy a trait nevét a trait kulcsszóval kell deklarálni.

A trait példányát nem lehet létrehozni - a traitok csak más osztályokhoz való csatolásra szolgálnak. Maga a csatolás a use paranccsal történik, amely után szóközzel elválasztva megadjuk a csatolandó trait nevét. Ez a parancs az osztály elején kerül megadásra.

Nézzük meg a traitok alkalmazását egy gyakorlati példán. Tegyük fel, hogy adott a következő Helper trait, amely tartalmazza a name és age privát tulajdonságokat, valamint azok getter metódusait:

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

Tegyük fel, hogy van egy User osztályunk is, amelynek konstruktorában beállítjuk a name és age tulajdonságokat:

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

Most adjunk hozzá getter metódusokat az osztályunk tulajdonságaihoz. Csak ne magában az osztályban írjuk le őket, hanem egyszerűen csatoljuk a Helper traitot, amelyben ezek a metódusok már implementálva vannak:

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

A trait csatolása után az osztályunkban megjelennek a trait metódusai és tulajdonságai. Ebben az esetben úgy férünk hozzájuk, mintha magának az osztálynak a metódusai és tulajdonságai lennének:

<?php $user = new User('john', 30); echo $user->getName(); // kiírja 'john'-t echo $user->getAge(); // kiírja 30-at ?>

Valósítsd meg a City osztályt a következő tulajdonságokkal: name, age, population és getter metódusokkal ezekhez. Az osztályunk használja a már általunk létrehozott Helper traitot a kódja lerövidítése érdekében.

Magyar
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
A weboldal működéséhez, elemzéshez és személyre szabáshoz sütiket használunk. Az adatfeldolgozás a Adatvédelmi irányelvek szerint történik.
összes elfogadása beállítás elutasítás