Trong PHP, viết hàm bên trong một hàm thì thường gọi là:
✅ Hàm lồng nhau (nested function)
function outer() {
echo "Đây là outern";
function inner() {
echo "Đây là innern";
}
}
outer();
inner(); // Gọi được sau khi outer đã được gọi
inner()
chỉ được định nghĩa sau khi outer()
chạy lần đầu tiên.inner()
ra global scope, chứ không phải closure thật sự.inner()
trong các hàm khác nhau – vì PHP không hỗ trợ hàm lồng nhau đúng nghĩa (scoped).function outer() {
$inner = function () {
echo "Đây là inner closuren";
};
$inner(); // Gọi luôn được
}
outer();
Kiểu | Gọi là gì | Đặc điểm |
---|---|---|
Hàm trong hàm (function A định nghĩa function B) | ✅ Nested function | PHP hỗ trợ tạm, không chuẩn, nên tránh |
Anonymous function trong hàm | ✅ Closure | Nên dùng – an toàn, gọn gàng |
Arrow function (PHP 7.4+) | ✅ Arrow function / Closure | Dùng khi cần ngắn gọn |