Rumah > pembangunan bahagian belakang > tutorial php > Bagaimana untuk Menyelesaikan Ralat \'Pengecualian: Pensirian \'Penutupan\' Tidak Dibenarkan\' Menggunakan Penutupan dalam Kaedah Ujian?

Bagaimana untuk Menyelesaikan Ralat \'Pengecualian: Pensirian \'Penutupan\' Tidak Dibenarkan\' Menggunakan Penutupan dalam Kaedah Ujian?

Susan Sarandon
Lepaskan: 2024-10-24 01:28:02
asal
597 orang telah melayarinya

How to Resolve

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan