Rumah > Artikel > rangka kerja php > thinkphp mengatasi kaedah kelas asas
ThinkPHP ialah rangka kerja pembangunan PHP popular yang menyediakan fungsi yang kaya dan kaedah pembangunan yang mudah. Dalam proses menggunakan ThinkPHP, kadangkala kita perlu mengubah suai kod teras rangka kerja untuk memenuhi keperluan khusus kita. Antaranya, kaedah kelas asas mengatasi adalah kaedah pengubahsuaian yang biasa.
Kelas asas merujuk kepada kelas asas dalam kod teras rangka kerja, yang mengandungi banyak kaedah penting. Mengatasi kaedah kelas asas bermakna mengubah suai tingkah laku kaedah untuk memenuhi keperluan pembangunan kita tanpa mengubah fungsi asal kelas asas. Artikel ini akan memperkenalkan cara ThinkPHP mengatasi kaedah kelas asas.
Dalam ThinkPHP, kita boleh mengatasi kaedah kelas asas dengan mencipta kelas sambungan. Kelas lanjutan merujuk kepada kelas yang dilanjutkan berdasarkan rangka kerja. Kita boleh mencipta fail kelas sambungan dalam direktori lanjutan di bawah direktori aplikasi, dan ruang nama kelas perlu sama dengan rangka kerja. Sebagai contoh, jika kita perlu mengatasi kaedah kelas asas pengawal, kita boleh mencipta fail berikut:
<?php namespace thinklibrarycontroller; use thinkController; class Base extends Controller { //重写方法 protected function _initialize() { //新的代码 } }
Dalam kelas sambungan, kita perlu mewarisi kelas asas yang diganti, dan kemudian mengatasi kaedah yang perlu diubah suai iaitu Boleh. Dalam contoh di atas, kami mengatasi kaedah _initialize() dalam kelas asas pengawal.
Selain mengatasi kaedah biasa, kadangkala kita juga perlu mengatasi pembaca dan penetap dalam penetap kelas asas. Pembaca ialah kaedah yang digunakan untuk mengakses harta peribadi dan dilindungi dalam kelas, manakala penetap ialah kaedah yang digunakan untuk menetapkan nilai harta benda.
Untuk mengatasi pembaca dan penetap, kita perlu menentukan kaedah dengan nama yang sama dalam kelas lanjutan dan menggunakan parent:: untuk memanggil kaedah dalam kelas asas. Sebagai contoh, kita perlu mengatasi pembaca dan penetap dalam kelas asas Model, kita boleh mencipta fail berikut:
<?php namespace thinklibrarymodel; use thinkModel; class Base extends Model { //重写读取器 public function __get($name) { //新的代码 return parent::__get($name); } //重写设置器 public function __set($name, $value) { //新的代码 parent::__set($name, $value); } }
Dalam contoh di atas, kita mengatasi __get() dalam kelas asas Model dan __set() kaedah.
Selepas mengatasi kaedah kelas asas dalam kelas lanjutan, kita perlu menggunakan kaedah overridden dalam pembangunan sebenar. Kami boleh menentukan penggunaan kaedah dalam kelas sambungan dengan mengubah suai item konfigurasi dalam fail dalam direktori konfigurasi di bawah direktori aplikasi.
Sebagai contoh, selepas mengatasi kaedah _initialize() kelas asas pengawal, kita boleh menentukan kelas sambungan sebagai kelas asas pengawal lalai aplikasi:
//config.php文件中添加以下代码 'controller' => 'appindexcontrollerAuth',
Nota Apa yang penting ialah kita perlu mengubah suai item konfigurasi dalam fail dalam direktori aplikasi, bukan fail kod teras rangka kerja. Dengan cara ini apabila kita menaik taraf rangka kerja, kaedah yang kita ganti tidak akan ditimpa.
Kesimpulan
Mengatasi kaedah kelas asas ialah cara yang fleksibel untuk mengubah suai kod asal rangka kerja. Dengan menggunakan kelas sambungan, kami boleh memenuhi keperluan khusus kami tanpa mengubah fungsi asal rangka kerja. Apabila mengekalkan kod dan meningkatkan rangka kerja, kami juga boleh mengeksport kandungan yang diubah suai dengan mudah untuk memastikan kebolehselenggaraan kod.
Atas ialah kandungan terperinci thinkphp mengatasi kaedah kelas asas. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!