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

Susan Sarandon
Lepaskan: 2024-10-24 01:28:02
asal
436 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!

sumber: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
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!