⊗ppOpTrInr 77 of 107 menu

Sifa za Ziada katika OOP katika PHP

Kama unavyojua tayari, katika PHP huwezi kurithi kutoka kwa madarasa kadhaa mara moja, moja tu. Hapo awali tumeona tayari suluhisho la tatizo hili: badala ya kurithi tumia vitu vikundi moja ndani ya nyingine.

Katika PHP kuna njia nyingine pia. Inajumuisha matumizi ya sifa za ziada. Sifa ya ziada inawakilisha seti ya mali na mbinu ambazo zinaweza kuingizwa kwenye darasa lingine. Wakati huo huo mali na mbinu za sifa ya ziada zitachukuliwa na darasa kana kwamba ni zake.

Syntax ya sifa ya ziada ni sawa na ya darasa, isipokuwa kwamba jina la sifa ya ziada linahitaji kutangazwa kwa kutumia neno kuu trait.

Hawezi kuunda mfano wa sifa ya ziada - sifa za ziada zinakusudiwa tu kwa kushikamana na madarasa mengine ya darasa. Uunganishaji lenyewe unafanyika kwa kutumia amri use, baada ya hapo kwa nafasi hutajwa jina la sifa ya ziada inayounganishwa. Amri hii imeandikwa mwanzoni mwa darasa.

Wacha tuone utumiaji wa sifa za ziada kwa kivitendo mfano. Hebu tuchukulie tuna sifa ya ziada Helper, iliyo na mali za kibinafsi name na age, pamoja na wapataji wao:

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

Hebu tuchukulie pia tuna darasa User, ambalo kwenye muundaji wake mali name na age huwekwa:

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

Hebu sasa tuongeze wapataji kwa mali ya darasa letu User. Lakini tusiziandike ndani ya darasa lenyewe, bali tuunganishe sifa ya ziada Helper, ambayo ndani yake mbinu hizi tayari zinatekelezwa:

<?php class User { use Helper; // unganisha sifa ya ziada public function __construct($name, $age) { $this->name = $name; $this->age = $age; } } ?>

Baada ya kuunganisha sifa ya ziada kwenye darasa letu zitaonekana mbinu na mali za sifa hii ya ziada. Wakati huo huo tutaweza kuziwataka kana kwamba ni mbinu na mali za darasa lenyewe:

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

Tekelezea darasa City lenye mali name, age, population na wapataji wao. Hebu darasa letu kwa ukatizo wa msimbo wake litumie tayari sifa ya ziada Helper tuliyoiunda.

Kiswahili
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Tunatumia kuki kwa ajili ya uendeshaji wa tovuti, uchambuzi na ubinafsishaji. Usindikaji wa data unafanyika kulingana na Sera ya Faragha.
kubali yote sanidi kataa