Dùng 'call_user_func'
Thuộc phần Logic và luồng chương trình trong hành trình PHP của Coddy. Bài học 5 trên 68.
Hàm (function) call_user_func() cung cấp một cách mạnh mẽ để gọi hàm một cách linh hoạt trong PHP. Thay vì gọi trực tiếp hàm bằng tên của nó, bạn có thể lưu tên hàm trong một biến chuỗi rồi dùng call_user_func() để thực thi hàm đó.
Đây là cú pháp cơ bản:
<?php
function greet() {
echo "Hello World!";
}
$functionName = "greet";
call_user_func($functionName); // Đầu ra: Hello World!
?>Điều này đặc biệt hữu ích khi bạn cần gọi các hàm khác nhau dựa trên đầu vào của người dùng hoặc các điều kiện. Bạn cũng có thể truyền đối số cho hàm bằng cách thêm chúng làm tham số bổ sung:
<?php
function add($a, $b) {
return $a + $b;
}
$operation = "add";
$result = call_user_func($operation, 5, 3);
echo $result; // Đầu ra: 8
?>Việc gọi hàm (function) động này đặc biệt hữu ích khi xây dựng các ứng dụng linh hoạt, trong đó hàm cụ thể cần thực thi được xác định khi chạy, chẳng hạn như máy tính, bộ xử lý lệnh hoặc hệ thống định tuyến.
Thử thách
DễTạo ba hàm: multiply nhận hai số và trả về tích của chúng, subtract nhận hai số và trả về hiệu của chúng, và divide nhận hai số và trả về thương của chúng.
Bạn sẽ nhận ba đầu vào: tên phép toán ("multiply", "subtract" hoặc "divide") và hai số. Đọc cả ba đầu vào, dùng call_user_func() để chạy hàm phù hợp với hai số, rồi in ra kết quả.
Định dạng đầu vào: Ba dòng: dòng đầu tiên chứa tên phép toán, dòng thứ hai chứa số thứ nhất, dòng thứ ba chứa số thứ hai
Đầu ra mong đợi: Kết quả của phép toán
Tự làm thử
<?php
// Đọc đầu vào
$operation = trim(fgets(STDIN));
$num1 = floatval(fgets(STDIN));
$num2 = floatval(fgets(STDIN));
// TODO: Tạo ba hàm (multiply, subtract, divide) tại đây
// TODO: Dùng call_user_func() để chạy hàm phù hợp
// In ra kết quả
echo $result;
?>Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.
Tất cả bài học trong Logic và luồng chương trình
1Hàm nâng cao
Hàm ẩn danhClosure và 'use'Hàm mũi tênHàm callbackDùng 'call_user_func'Hàm biếnTruyền tham chiếuHàm đệ quyÔn tập: tổng hợp về hàm4Mảng đa chiều
Tạo mảng 2 chiềuTruy cập phần tử trong mảng 2 chiềuChỉnh sửa phần tử trong mảng 2 chiềuLặp qua các vòng lặp lồng nhauMảng kết hợp 2 chiềuÔn tập: bài tập lưới đơn giản2Thao tác nâng cao với mảng
Thêm phần tử bằng 'array_push'Xóa phần tử bằng 'array_pop'Thêm phần tử vào đầu mảng bằng 'array_unshift'Xóa phần tử đầu mảng bằng 'array_shift'Gộp các mảng được đánh chỉ sốGộp các mảng kết hợpTrích xuất phần tử bằng 'array_slice'Kiểm tra giá trị bằng 'in_array'Tìm khóa bằng 'array_search'Ôn tập: bài tập về danh sách phát3Sắp xếp mảng
Sắp xếp mảng có chỉ số tăng dầnSắp xếp mảng có chỉ số giảm dầnSắp xếp mảng kết hợp theo giá trịSắp xếp mảng kết hợp theo khóaSắp xếp theo thứ tự tự nhiênSắp xếp tùy chỉnh bằng 'usort'Ôn tập: Sắp xếp bảng xếp hạngTự luyện tập: Trình biên dịch PHP online