Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> PHP

Anonymous functions (Hàm ẩn danh) trong PHP

Giới thiệu

Anonymous function là function không có tên do người dùng định nghĩa. Còn gọi là closure hoặc lambda function. Đôi khi cần function chỉ dùng một lần. Closure là anonymous function "đóng gói" môi trường nơi nó được định nghĩa. Cần từ khóa use. Ứng dụng phổ biến nhất là tạo inline callback function.

Cú pháp

$var = function ($arg1, $arg2) { return $val; };
  • Không có tên function giữa function và ngoặc mở.
  • Có dấu chấm phẩy sau định nghĩa vì anonymous function definitions là expressions.
  • Function gán cho biến, gọi sau bằng tên biến.
  • Khi truyền cho function khác gọi sau, gọi là callback.
  • Trả về từ outer function để truy cập biến của outer function - gọi là closure.

Ví dụ

Anonymous function cơ bản

<?php
$var = function ($x) { return pow($x, 3); };
echo "cube of 3 = " . $var(3);
?>

Kết quả

cube of 3 = 27

Anonymous function làm callback

Dùng anonymous function làm argument cho built-in usort(). Hàm usort() sắp xếp mảng dùng function so sánh:

<?php
$arr = [10, 3, 70, 21, 54];
usort($arr, function ($x, $y) {
    return $x > $y;
});
foreach ($arr as $x) {
    echo $x . "\n";
}
?>

Kết quả

3
10
21
54
70

Anonymous function làm closure

Closure là anonymous function truy cập biến ngoài scope nhờ từ khóa use:

<?php
$maxmarks = 300;
$percent = function ($marks) use ($maxmarks) {
    return $marks * 100 / $maxmarks;
};
echo "marks=285 percentage=" . $percent(285);
?>

Kết quả

marks=285 percentage=95