php幻术方法: _get() 和 _set()的妙用
php魔术方法: __get() 和 __set()的妙用
?
<?phpclass Post { private $title; private $content; private $author; private $comments; private $_getters = array('title', 'content', 'author', 'comments'); private $_setters = array('title', 'content', 'author'); public function __get($property) { if (in_array($property, $this->_setters)) { return $this->$property; } else if (method_exists($this, '_get_' . $property)) return call_user_func(array($this, '_get_' . $property)); else if (in_array($property, $this->_getters) OR method_exists($this, '_set_' . $property)) throw new Exception('Property "' . $property . '" is write-only.'); else throw new Exception('Property "' . $property . '" is not accessible.'); } public function __set($property, $value) { if (in_array($property, $this->_getters)) { $this->$property = $value; } else if (method_exists($this, '_set_' . $property)) call_user_func(array($this, '_set_' . $property), $value); else if (in_array($property, $this->_setters) OR method_exists($this, '_get_' . $property)) throw new Exception('Property "' . $property . '" is read-only.'); else throw new Exception('Property "' . $property . '" is not accessible.'); }}?>This way the variables in the $_getters array can be read from the outside and the variables in the $_setters array can be modified from the outside, like this:<?php$post = new Post();$post->title = 'Hello, World';echo $post->title;// The following will throw an exception since $comments is read-only:$post->comments = 23;?>And in case you need a less generic getter or setter at some point, you can remove the variable from the $_getters or $_setters array and implement a method like:<?phpprivate function _set_title($value) { $this->title = str_replace('World', 'Universe', $value);}?>And from the outside the property could still be used with:<?php$post->title = 'Hello, World!';?>
?上面是手册里的例子,但是我觉得应该是先判断类里面是否有处理属性的方法,有的话就调用该方法,没有就直接设置该属性。
?

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Editor Laporan Kuasa Mesin: Wu Xin Versi domestik robot humanoid + pasukan model besar menyelesaikan tugas operasi bahan fleksibel yang kompleks seperti melipat pakaian buat kali pertama. Dengan pelancaran Figure01, yang mengintegrasikan model besar berbilang modal OpenAI, kemajuan berkaitan rakan domestik telah menarik perhatian. Baru semalam, UBTECH, "stok robot humanoid nombor satu" China, mengeluarkan demo pertama robot humanoid WalkerS yang disepadukan secara mendalam dengan model besar Baidu Wenxin, menunjukkan beberapa ciri baharu yang menarik. Kini, WalkerS, diberkati oleh keupayaan model besar Baidu Wenxin, kelihatan seperti ini. Seperti Rajah01, WalkerS tidak bergerak, tetapi berdiri di belakang meja untuk menyelesaikan satu siri tugasan. Ia boleh mengikut perintah manusia dan melipat pakaian

Notis PHP: Tryingtogetpropertyofnon-object-Solution Semasa proses pembangunan PHP, kita mungkin menghadapi mesej ralat biasa: Tryingtogetpropertyofnon-object (cuba mendapatkan sifat bukan objek). Ralat ini biasanya disebabkan apabila kita cuba mengakses harta (atau memanggil kaedah) pada pembolehubah yang bukan jenis objek. Artikel ini akan memperkenalkan anda kepada ini

Semasa menulis kod dalam PHP, kami mungkin menghadapi mesej ralat "Notis: Undefinedproperty". Ralat ini bermakna kami sedang mengakses sifat yang tidak ditentukan, biasanya kerana sifat tersebut belum dimulakan dalam kod. Jadi, bagaimana untuk menyelesaikan masalah ini? Berikut ialah beberapa penyelesaian yang mungkin: Mulakan sifat Ini adalah cara paling mudah untuk menyelesaikan masalah ini. Memulakan sifat dalam kod secara eksplisit memastikan ia ditakrifkan sebelum digunakan. Contohnya: kelas

Tajuk: Contoh menggunakan fungsi Array.Sort untuk mengisih tatasusunan dalam Teks C#: Dalam C#, tatasusunan ialah struktur data yang biasa digunakan dan operasi pengisihan tatasusunan selalunya diperlukan. C# menyediakan kelas Array, yang mempunyai kaedah Isih untuk menyusun tatasusunan dengan mudah. Artikel ini akan menunjukkan cara menggunakan fungsi Array.Sort dalam C# untuk mengisih tatasusunan dan memberikan contoh kod khusus. Pertama, kita perlu memahami penggunaan asas fungsi Array.Sort. Susunan.Jadi

Vue ialah rangka kerja JavaScript yang popular untuk membina antara muka pengguna. Semasa proses pembangunan, kami mungkin menghadapi pelbagai ralat dan pengecualian. Salah satu ralat biasa ialah "TypeError:Cannotreadproperty'XXX'ofnull". Dalam artikel ini, kami akan meneroka punca ralat ini dan cara membetulkannya. Pertama, mari kita fahami sebab di sebalik ralat ini. Apabila kita cuba mengakses harta atau kaedah objek, jika pasangan itu

Tajuk ialah makna yang mentakrifkan tajuk halaman web Ia terletak dalam teg dan teks yang dipaparkan dalam bar tajuk pelayar adalah sangat penting untuk pengoptimuman enjin carian dan pengalaman pengguna halaman web. Apabila menulis halaman web HTML, anda harus memberi perhatian kepada menggunakan kata kunci yang berkaitan dan penerangan yang menarik untuk menentukan elemen tajuk untuk menarik lebih ramai pengguna mengklik dan menyemak imbas.

Apabila pengaturcaraan dalam PHP, kita selalunya perlu menggabungkan tatasusunan. PHP menyediakan fungsi array_merge() untuk melengkapkan penggabungan tatasusunan, tetapi apabila kunci yang sama wujud dalam tatasusunan, fungsi ini akan menimpa nilai asal. Untuk menyelesaikan masalah ini, PHP juga menyediakan fungsi array_merge_recursive() dalam bahasa, yang boleh menggabungkan tatasusunan dan mengekalkan nilai kunci yang sama, menjadikan reka bentuk program lebih fleksibel. array_merge

Dalam PHP, terdapat banyak fungsi tatasusunan berkuasa yang boleh menjadikan operasi tatasusunan lebih mudah dan lebih pantas. Apabila kita perlu menggabungkan dua tatasusunan ke dalam tatasusunan bersekutu, kita boleh menggunakan fungsi array_combine PHP untuk mencapai operasi ini. Fungsi ini sebenarnya digunakan untuk menggabungkan kekunci satu tatasusunan sebagai nilai tatasusunan lain ke dalam tatasusunan bersekutu baharu. Seterusnya, kami akan menerangkan cara menggunakan fungsi array_combine dalam PHP untuk menggabungkan dua tatasusunan menjadi tatasusunan bersekutu. Ketahui tentang array_comb
