⊗ppOpMgROP 89 of 107 menu

Sifa za Usomaji Pekee katika OOP katika PHP

Wacha tuchunguze darasa ambalo sifa zake zote ni za kibinafsi:

<?php class Test { private $prop1 = 1; private $prop2 = 2; } ?>

Sasa tufanye hivi, ili sifa hizi katika ulimwengu wa nje ziwe zinapatikana kusomwa pekee. Hapo awali tumefanya kama hivi, tukiunda wageti kwa kila sifa na bila kuunda waseti.

Sasa hebu tutatue tatizo hili kwa kutumia mbinu ya kichawi __get. Tutairudisha ndani yake thamani ya sifa iliyoombwa. Jinsi ya kufanya hivyo: jina la sifa iliyoombwa inaingia katika kigezo cha mbinu __get, kwa upande wetu $property.

Hii inamaanisha kuwa tunaweza kusoma sifa, ambayo jina lake limehifadhiwa kwenye kigezo, hivi: $this->$property (jina la sifa litakuwa kigezo, yaani na dola mwanzoni, tumefanya hii katika masomo yaliyopita).

Wacha tufanye mbinu __get iliyoelezewa:

<?php class Test { private $prop1 = 1; private $prop2 = 2; public function __get($property) { return $this->$property; } } ?>

Tutumie kusoma sifa:

<?php $test = new Test; echo $test->prop1; // itatoa 1 echo $test->prop2; // itatoa 2 ?>

Jaribio la kuandika kitu chochote kwenye sifa litasababisha hitilafu:

<?php $test = new Test; $test->prop1 = 2; // itatoa hitilafu ?>

Hii ndiyo tunayohitaji: sifa inaweza kusomwa, lakini haiwezi kuandikwa.

Jaribio la kusoma sifa isiyopo litasababisha hitilafu:

<?php $test = new Test; echo $test->prop3; // itatoa hitilafu ?>

Pia tafadhali zingatia undani ufuatao: tulipokuwa tukifanya sifa ziwe za usomaji pekee kwa njia ya zamani, ili kusoma sifa, tulitumia mbinu-getti.

Katika njia mpya tutaelekea haswa kwenye sifa, kana kwamba ni za umma. Lakini kuandika ndani yazo hatutaweza, kana kwamba ni za kibinafsi.

Wacha iwe kuna darasa User kama hivi, sifa zake zinapatikana kusomwa pekee kwa kutumia wageti:

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

Rekebisha msimbo wa darasa hili ili badala ya wageti itumike mbinu ya kichawi __get.

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