⊗ppOpMgROP 89 of 107 menu

Properti Hanya Baca dalam OOP di PHP

Mari kita lihat kelas di mana semua properti bersifat privat:

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

Sekarang mari kita buat agar properti-properti ini di dunia luar hanya dapat dibaca. Sebelumnya kita sudah melakukan hal seperti ini, dengan membuat getter untuk setiap properti dan tidak membuat setter.

Sekarang mari kita gunakan metode ajaib __get untuk menyelesaikan tugas ini. Kita akan mengembalikan nilai properti yang diminta di dalamnya. Bagaimana caranya: nama properti yang diminta masuk ke dalam parameter metode __get, dalam kasus kita $property.

Ini berarti kita dapat membaca properti, yang namanya disimpan dalam variabel, seperti ini: $this->$property (nama properti akan menjadi variabel, yaitu dengan tanda dolar di awal, kita telah mempelajari ini dalam pelajaran sebelumnya).

Mari kita buat metode __get yang telah dijelaskan:

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

Mari kita gunakan untuk membaca properti:

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

Upaya untuk menulis sesuatu ke properti akan menyebabkan error:

<?php $test = new Test; $test->prop1 = 2; // akan menghasilkan error ?>

Ini tepat yang kita butuhkan: properti dapat dibaca, tetapi tidak dapat ditulis.

Upaya untuk membaca properti yang tidak ada akan menghasilkan error:

<?php $test = new Test; echo $test->prop3; // akan menghasilkan error ?>

Perhatikan juga nuansa berikut: ketika kita membuat properti hanya untuk dibaca dengan cara lama, maka untuk membaca properti, kita menggunakan metode getter.

Dalam cara baru, kita akan mengakses properti secara langsung, seolah-olah mereka publik. Tetapi menulis ke dalamnya tidak akan bisa, seolah-olah mereka privat.

Misalkan diberikan kelas User berikut, yang propertinya hanya dapat 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 kode kelas ini sehingga alih-alih getter, digunakan metode ajaib __get.

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