⊗ppOpMgSP 91 of 107 menu

Penulisan Properti melalui Magic dalam OOP di PHP

Metode ajaib __set dipanggil saat ada upaya untuk mengubah nilai properti yang tidak ada atau tersembunyi. Sebagai parameternya, ia menerima nama properti dan nilai yang ingin diberikan padanya.

Mari kita lihat pada contoh praktis. Misalkan kita diberikan kelas Test seperti berikut:

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

Mari kita buat metode ajaib __set di kelas ini, yang dengan fungsi var_dump akan menampilkan nama properti yang diakses, dan nilai yang ingin diatur untuk properti tersebut:

<?php class Test { private $prop1; private $prop2; public function __set($property, $value) { var_dump($property . ' ' .$value); } } ?>

Mari kita uji kerja kelas kita:

<?php $test = new Test; $test->prop = 'value'; // var_dump dari metode __set akan menampilkan 'prop value' ?>

Sekarang mari kita atur nilai properti, yang namanya disimpan dalam variabel $property:

<?php class Test { private $prop1; private $prop2; public function __set($property, $value) { $this->$property = $value; // mengatur nilai } } ?>

Sekarang kita bisa menulis ke properti privat dari luar kelas:

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

Kita bisa menulis, namun, untuk memeriksa apakah sudah tertulis sesuatu di sana - tidak bisa, karena propertinya privat.

Kita bisa membuat getter untuk properti ini atau cukup menggunakan metode ajaib __get. Mari gunakan opsi kedua:

<?php class Test { private $prop1; private $prop2; public function __set($property, $value) { $this->$property = $value; } // Getter ajaib untuk properti: public function __get($property) { return $this->$property; } } ?>

Sekarang kita bisa menguji kerja kelas kita. Mari kita uji:

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

Sebenarnya, tentu saja, tidak seharusnya mengizinkan siapa pun menulis ke properti privat, jika tidak, inti dari properti privat itu sendiri akan hilang (lebih mudah menjadikannya publik saja).

Oleh karena itu, metode ini sebaiknya hanya diterapkan ketika benar-benar ada kebutuhan. Dalam pelajaran berikutnya, kita akan membahas contoh-contoh penerapan yang tepat.

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