Trong PHP, lambda là một loại hàm ẩn danh (anonymous function) tương tự như closure. Thực tế, tất cả các hàm ẩn danh trong PHP đều có thể gọi là lambda, và chúng có thể được lưu trữ trong các biến hoặc truyền dưới dạng đối số cho các hàm khác. Sự khác biệt chính giữa lambda và closure là closure có thể “bắt giữ” các biến từ phạm vi bên ngoài của nó nhờ từ khóa use
.
Cú pháp lambda trong PHP
Lambda được tạo bằng cách sử dụng từ khóa function
mà không cần tên hàm. Ví dụ:
$lambdaFunction = function($name) {
return "Hello, " . $name;
};
echo $lambdaFunction("Em");
Trong ví dụ này, $lambdaFunction
là một lambda và có thể được gọi giống như một hàm thông thường.
Lambda và Closure
Về cơ bản, closure và lambda trong PHP là giống nhau, tuy nhiên closure có khả năng “bắt” các biến từ phạm vi bên ngoài nhờ vào từ khóa use
.
Ví dụ về Closure với use
:
$greeting = "Hello";
$lambdaFunction = function($name) use ($greeting) {
return $greeting . ", " . $name;
};
echo $lambdaFunction("Anh");
Ở đây, biến $greeting
được nắm giữ bởi closure và sử dụng trong hàm.
Ứng dụng của Lambda
Lambda rất hữu ích trong các trường hợp cần sử dụng callback hoặc truyền các hàm vào các hàm khác.
Ví dụ sử dụng với array_map
:
$numbers = [1, 2, 3, 4, 5];
$squared = array_map(function($num) {
return $num * $num;
}, $numbers);
print_r($squared); // Kết quả: [1, 4, 9, 16, 25]
Kết luận
Lambda trong PHP là một hàm ẩn danh và được sử dụng linh hoạt trong nhiều trường hợp như callback, xử lý dữ liệu mảng, hoặc truyền hàm dưới dạng tham số. Khi kết hợp với từ khóa use
, nó trở thành một closure có khả năng bắt giữ các biến từ phạm vi bên ngoài.