Rumah >pembangunan bahagian belakang >tutorial php >Bagaimana untuk Menyelesaikan Ralat \'Pengecualian: Pensirian \'Penutupan\' Tidak Dibenarkan\' Menggunakan Penutupan dalam Kaedah Ujian?
Pengecualian: Pensirian 'Penutupan' Tidak Dibenarkan
Apabila cuba menggunakan penutupan dalam kaedah ujian, "Pengecualian: Pensirian ' Penutupan' tidak dibenarkan" ralat mungkin berlaku.
Masalah
Serpihan kod di bawah menggunakan penutupan untuk menentukan laluan fail tersuai untuk menyimpan e-mel:
<code class="php">protected function _initMailer() { ... elseif ('testing' === APPLICATION_ENV) { // ... $callback = function() { return 'ZendMail_' . microtime(true) .'.tmp'; }; // ... }</code>
Resolusi
Penyelesaian 1: Gantikan Penutupan dengan Fungsi Biasa
Ganti penutupan dengan fungsi biasa:
<code class="php">protected function _initMailer() { ... elseif ('testing' === APPLICATION_ENV) { // ... function emailCallback() { return 'ZendMail_' . microtime(true) . '.tmp'; } $callback = "emailCallback"; // ... }</code>
Penyelesaian 2: Gunakan Pembolehubah Tatasusunan untuk Panggilan Kaedah Tidak Langsung
Gunakan pembolehubah tatasusunan untuk memanggil kaedah secara tidak langsung:
<code class="php">protected function _initMailer() { ... elseif ('testing' === APPLICATION_ENV) { // ... $callback = array($this, "aMethodInYourClass"); // ... }</code>
Ini membolehkan anda untuk tentukan kaedah dalam kelas dan hantarkannya ke panggil balik menggunakan tatasusunan.
Atas ialah kandungan terperinci Bagaimana untuk Menyelesaikan Ralat \'Pengecualian: Pensirian \'Penutupan\' Tidak Dibenarkan\' Menggunakan Penutupan dalam Kaedah Ujian?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!