⊗ppOpMgROP 89 of 107 menu

PHP-dä OOP-dä diňe okalýan aýratynlyklar

Içindäki ähli aýratynlyklary hususy bolan bir klas göräýli:

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

Indi bu aýratynlyklary daşary dünýäde diňe okap bolýan ýagdaýa getireýäli. Öňler biz muny her bir aýratynlyk üçin getter döredip, setter döredilmeýän ýagdaýda edýärdik.

Bu meseläni çözmek üçin indi sehrli usul __get-dan peýdalanyň. Onda talap edilen aýratynlygyň bahasyny gaýtaryp bereris. Buny nädip etmeli: talap edilen aýratynlygyň ady __get usulynyň parametrine düşýär, bizim ýagdaýymyzda $property.

Bu diýýän, biz içinde üýtgeýjide saklanylýan aýratynlygyň ady bolan aýratynlygy şuňa meňzeş okap bileris: $this->$property (aýratynlygyň ady üýtgeýji bolup, ýagny başynda dollaryň bolýandygyny, biz bu öwrenileni öňki sapaklarda geçdik).

Görlüşi şuňa meňzeş bolan __get usulyny dörediň:

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

Aýratynlyklary okamak üçin ony ulanyň:

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

Aýratynlyga bir zat ýazmaga synanyşmak ýalňyşlyga sebep bolýar:

<?php $test = new Test; $test->prop1 = 2; // ýalňyşlyk berer ?>

Bu bize gerek zat: aýratynlygy okap bolýar, ýöne ýazyp bolmaýar.

Ýöne ýok aýratynlygy okamaga synanyşmak ýalňyşlyk berer:

<?php $test = new Test; echo $test->prop3; // ýalňyşlyk berer ?>

Şu näsagy hem üns beriň: biz diňe okalýan aýratynlyklary köne usul bilen edende, aýratynlygy okamak üçin, biz getter-usulyny ulandy.

Täze usulda biz aýratynlyklara dogrudan-da olar umumy bolan ýaly ýüzlenýäris. Ýöne olaryň içine ýazyp bilmeýäris, olar hususy bolan ýaly.

User klasy berlen bolsun, onuň aýratynlyklary getterler arkaly diňe okap bolýan ýagdaýda:

<?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; } } ?>

Bu klassyň kodyny şeýle bir ýagdaýa üýtgediň, getterler ýerine sehrli usul __get ulanylsyn.

Türkmen
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkçeЎзбекOʻzbekTiếng Việt
Biz sahypanyň işlemegi, analitika we şahsyýetleşdirmek üçin cookie ulanýarys. Maglumatlaryň işlenişi Gizlinlik syýasaty boýunça amala aşyrylýar.
hemmesini kabul et sazlamak ret et