Dalam rangka kerja ThinkPHP5, kelas asas (Base) ialah kelas induk bagi semua pengawal dan mengandungi banyak kaedah penting, seperti: permulaan pengawal, pemaparan templat, output templat, dsb. Dalam pembangunan sebenar, kadangkala kita perlu menulis semula beberapa kaedah dalam kelas asas untuk memenuhi keperluan perniagaan khusus kita. Jadi, bagaimana untuk mengatasi kaedah kelas asas dalam rangka kerja ThinkPHP5? Saya akan pergi secara terperinci di bawah.
Langkah pertama ialah mencari fail kelas asas
Dalam rangka kerja ThinkPHP5, fail kelas asas (Base) berada dalam "thinkController.php". Direktori lalai bagi fail ini ialah "/thinkphp/library/think/", dan fail itu juga boleh didapati melalui "topthink/framework" yang dipasang oleh komposer. Oleh itu, kita perlu mencari fail kelas asas pengawal sebelum kita boleh mengubah suainya.
Langkah kedua ialah menulis kaedah tersuai
Sebelum mengatasi kaedah kelas asas, kita perlu menulis kaedah tersuai. Logik kod kaedah ini perlu ditulis mengikut keperluan perniagaan sebenar, dan ia boleh dipanggil di mana-mana sahaja yang diperlukan dalam pengawal. Sebagai contoh, kita perlu menentukan sama ada pengguna semasa log masuk sebelum output pengawal Jika pengguna semasa tidak log masuk, lompat ke halaman log masuk.
Operasi khusus adalah seperti berikut:
<?php namespace appindexcontroller; use thinkController; class Base extends Controller { public function _initialize() { parent::_initialize(); // ... } public function index() { // ... } public function checkLogin() { // 判断用户是否登录 if(!session('?user_id')) { $this->redirect('user/login'); } } }
Dalam kod sampel di atas, kami menulis kaedah tersuai bernama "checkLogin" untuk menentukan sama ada pengguna telah log masuk. Apabila pengguna tidak log masuk, kaedah ini akan melompat ke halaman log masuk yang ditentukan melalui kaedah ubah hala.
Langkah ketiga ialah menulis semula kaedah kelas asas
Selepas menulis kaedah tersuai kami sendiri, kami boleh mengatasi kaedah kelas asas. Kaedah kelas asas dalam rangka kerja ThinkPHP5 semuanya dilindungi atau kaedah jenis awam Anda biasanya boleh mencapai keperluan perniagaan anda sendiri dengan mewarisi kelas asas dan mengatasi kaedah kelas asas. Sebagai contoh, kita perlu menentukan sama ada pengguna semasa log masuk sebelum keluaran pengawal Jika sudah log masuk, tidak perlu melompat.
Operasi khusus adalah seperti berikut:
<?php namespace appindexcontroller; use thinkController; class Base extends Controller { public function _initialize() { parent::_initialize(); $this->checkLogin(); // 调用自定义方法检测用户是否登录 } public function index() { // ... } // 重写基类的redirect方法 protected function redirect($url, $params = array(), $code = 302, $with_prefix = false) { // 当前用户已登录,则直接输出模板 if(session('?user_id')) { parent::redirect($url, $params, $code, $with_prefix); } // 当前用户未登录,则跳转至登录页面 else { parent::redirect('user/login'); } } }
Dalam kod contoh di atas, kami mengatasi kaedah ubah hala kelas asas untuk menentukan sama ada pengguna semasa dilog masuk. Apabila pengguna log masuk, templat akan dikeluarkan secara langsung apabila pengguna tidak log masuk, ia akan secara automatik melompat ke halaman log masuk.
Ringkasan
Dalam rangka kerja ThinkPHP5, menulis semula kaedah kelas asas boleh membantu kami merealisasikan keperluan perniagaan kami sendiri. Kaedah kelas asas mengatasi perlu mengikut tandatangan dan semantik kaedah kelas asas, dan pelaksanaan kaedah kelas asas perlu dianalisis dengan teliti sebelum pengubahsuaian. Menulis semula kaedah kelas asas perlu dilakukan dalam pengawal Langkah-langkah khusus termasuk: mula-mula menulis kaedah tersuai anda kemudian menulis semula kaedah kelas asas dan akhirnya memanggil kaedah tersuai di mana diperlukan.
Atas ialah kandungan terperinci thinkphp mengatasi kaedah kelas asas. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!