⊗ppOpMgSP 91 of 107 menu

Menulis Sifat melalui Sihir dalam OOP dalam PHP

Kaedah ajaib __set dipanggil apabila cuba mengubah nilai sifat yang tidak wujud atau tersembunyi. Ia menerima nama sifat dan nilai yang cuba diberikan kepadanya sebagai parameter.

Mari kita lihat contoh praktikal. Katakan kita mempunyai kelas Test seperti berikut:

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

Mari buat kaedah ajaib __set dalam kelas ini, yang menggunakan fungsi var_dump untuk memaparkan nama sifat yang diakses, dan nilai yang cuba ditetapkan untuk sifat tersebut:

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

Mari kita uji kerja kelas kami:

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

Sekarang mari kita tetapkan nilai kepada sifat yang namanya disimpan dalam pembolehubah $property:

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

Sekarang kita boleh menulis kepada sifat persendirian dari luar kelas:

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

Kita boleh menulis, namun, untuk menyemak sama ada something telah ditulis ke sana - tidak boleh, kerana sifat tersebut adalah persendirian.

Kita boleh membuat getter untuk sifat-sifat ini atau hanya menggunakan kaedah ajaib __get. Mari gunakan pilihan kedua:

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

Sekarang barulah kita boleh menguji kerja kelas kami. Mari uji:

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

Sebenarnya, sudah tentu, tidak wajar membenarkan sesiapa sahaja menulis kepada sifat persendirian, jika tidak, intipati sifat persendirian ini akan hilang (lebih mudah menjadikannya awam dan selesai).

Oleh itu, kaedah ini hanya patut digunakan apabila terdapat keperluan sebenar. Dalam pelajaran seterusnya, kita akan melihat contoh aplikasi yang berjaya.

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