⊗ppOpMgROP 89 of 107 menu

Sifat Baca Sahaja dalam OOP dalam PHP

Mari kita lihat kelas di mana semua sifat adalah peribadi:

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

Sekarang mari kita buat supaya sifat-sifat ini dalam dunia luar hanya boleh dibaca. Sebelum ini kita telah melakukan perkara sedemikian, dengan mencipta getter untuk setiap sifat dan tidak mencipta setter.

Sekarang untuk menyelesaikan tugas ini, mari kita gunakan kaedah ajaib __get. Kita akan mengembalikan nilai sifat yang diminta di dalamnya. Bagaimana untuk melakukannya: nama sifat yang diminta masuk ke dalam parameter kaedah __get, dalam kes kami $property.

Ini bermakna kita boleh membaca sifat, namanya disimpan dalam pembolehubah, seperti ini: $this->$property (nama sifat akan menjadi pembolehubah, iaitu dengan tanda dolar di awal, kita telah mempelajari ini dalam pelajaran sebelumnya).

Mari buat kaedah __get yang diterangkan:

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

Mari gunakannya untuk membaca sifat:

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

Cubaan untuk menulis sesuatu ke dalam sifat akan menyebabkan ralat:

<?php $test = new Test; $test->prop1 = 2; // akan memberikan ralat ?>

Ini tepat seperti yang kita perlukan: sifat boleh dibaca, tetapi tidak boleh ditulis.

Cubaan untuk membaca sifat yang tidak wujud akan memberikan ralat:

<?php $test = new Test; echo $test->prop3; // akan memberikan ralat ?>

Sila perhatikan juga nuansa berikut: apabila kita membuat sifat hanya untuk dibaca dengan cara lama, untuk membaca sifat, kita menggunakan kaedah getter.

Dalam cara baru, kita akan merujuk tepat kepada sifat, seolah-olah ia awam. Tetapi menulis ke dalamnya tidak akan berjaya, seolah-olah ia peribadi.

Katakan diberikan kelas User seperti berikut, sifat-sifatnya hanya boleh dibaca dengan menggunakan getter:

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

Ubah suai kod kelas ini supaya bukannya getter, kaedah ajaib __get digunakan.

Melayu
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Kami menggunakan kuki untuk operasi laman web, analisis dan personalisasi. Pemprosesan data dijalankan mengikut Polisi Kerahsiaan.
terima semua tataletak tolak