Bagaimana untuk menggunakan fungsi sebagai panggilan balik dalam PHP?

王林
Lepaskan: 2024-04-10 17:51:01
asal
879 orang telah melayarinya

Untuk menggunakan fungsi sebagai panggil balik dalam PHP, anda boleh menggunakan fungsi tanpa nama atau fungsi bernama. Sintaks fungsi tanpa nama ialah: $callback = function ($argument) { return $result }. Fungsi bernama mempunyai nama dan ditakrifkan seperti fungsi biasa. Fungsi terbina dalam yang biasa digunakan menerima panggilan balik sebagai parameter, seperti array_map(), array_filter(), usort(). Dalam kes praktikal, anda boleh menggunakan fungsi panggil balik untuk menentukan peraturan pengesahan tersuai dan menyerahkannya kepada fungsi pengesahan, seperti panggilan balik pengesahan e-mel: function validateEmail($email) { return filter_var($email, FILTER_VALIDATE_EMAIL }.

如何在 PHP 中使用函数作为回调?

Cara menggunakan fungsi sebagai panggilan balik dalam PHP

Fungsi panggil balik ialah fungsi yang dipanggil dalam fungsi lain. Dalam PHP, anda boleh menggunakan fungsi tanpa nama (penutupan) atau menamakan fungsi sebagai panggilan balik.

Gunakan fungsi tanpa nama sebagai panggilan balik

Fungsi tanpa nama ialah fungsi tanpa nama yang boleh dibuat apabila diperlukan. Untuk mencipta fungsi tanpa nama, gunakan sintaks berikut:

$callback = function ($argument) { return $result; };
Salin selepas log masuk

Sebagai contoh, buat fungsi panggil balik yang menambah 5 pada nombor:

$add5 = function ($num) { return $num + 5; };
Salin selepas log masuk

Gunakan fungsi bernama sebagai panggilan balik

Fungsi bernama ialah fungsi yang mempunyai nama dan boleh digunakan seperti fungsi biasa Definisi yang sama. Untuk menggunakan fungsi bernama sebagai panggilan balik, berikan nama fungsi tersebut.

Contohnya, buat fungsi panggil balik yang menduakan nombor dan tambah 10:

function squareAndAdd10($num) { return $num * $num + 10; }
Salin selepas log masuk

Panggil fungsi yang menggunakan panggilan balik

Terdapat beberapa fungsi terbina dalam yang menerima panggilan balik sebagai argumen, contohnya:

    array_map()</ code>: Gunakan panggilan balik pada setiap elemen dalam tatasusunan</li><li><code>array_filter(): Tapis elemen tatasusunan, mengembalikan BENAR atau FALSE mengikut hasil panggilan balikarray_map(): 将回调应用于数组中的每个元素
  • array_filter(): 过滤数组元素,根据回调的结果返回 TRUE 或 FALSE
  • usort(): 根据回调中定义的排序条件对数组进行排序

例如,使用 array_map()$add5 回调应用到数组 $numbers:

$numbers = [1, 2, 3, 4, 5];
$result = array_map($add5, $numbers);
Salin selepas log masuk

此时,$result 将包含 [6, 7, 8, 9, 10]

实战案例

使用回调函数的一个常见例子是添加自定义验证规则。假设你有一个处理表单的函数,你想验证表单字段的值。你可以使用回调来定义自定义验证规则,并将该规则传递给验证函数。

例如,创建一个回调来验证 email 地址:

function validateEmail($email) { return filter_var($email, FILTER_VALIDATE_EMAIL); }
Salin selepas log masuk

然后,你可以将此回调传递给表单验证函数:

$validator = new FormValidator();
$validator->addRule('email', 'validateEmail');
Salin selepas log masuk

现在,FormValidator 将会使用 validateEmailusort (): Isih tatasusunan mengikut syarat pengisihan yang ditakrifkan dalam panggilan balik

Sebagai contoh, gunakan array_map() untuk menambah <code>$add5 Panggilan balik digunakan pada tatasusunan $numbers:🎜rrreee🎜Pada ketika ini, $result akan mengandungi [6, 7, 8, 9, 10]. 🎜🎜🎜Kes Praktikal🎜🎜🎜Contoh biasa menggunakan fungsi panggil balik ialah menambah peraturan pengesahan tersuai. Katakan anda mempunyai fungsi yang mengendalikan borang dan anda ingin mengesahkan nilai medan borang. Anda boleh menggunakan panggil balik untuk mentakrifkan peraturan pengesahan tersuai dan lulus peraturan itu kepada fungsi pengesahan. 🎜🎜Sebagai contoh, buat panggilan balik untuk mengesahkan alamat e-mel: 🎜rrreee🎜Anda kemudian boleh menghantar panggilan balik ini ke fungsi pengesahan borang: 🎜rrreee🎜Sekarang, FormValidator akan menggunakan validateEmail kod> Panggilan balik untuk mengesahkan alamat e-mel. 🎜

Atas ialah kandungan terperinci Bagaimana untuk menggunakan fungsi sebagai panggilan balik dalam PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php.cn
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan