•
Tại sao sử dụng "call_user_function" trong PHP
Trong khi tìm hiểu về hàm call_user_function
em thấy có ví dụ sau:
function barber($type){
echo "You wanted a $type haircut, no problem\n";
}
call_user_func('barber', "mushroom");
call_user_func('barber', "shave");
Nhưng tại sao không gọi hàm barber
trực tiếp mà phải thông qua call_user_function
?
Ví dụ trong câu hỏi của bạn được đưa ra với mục đích hướng dẫn cách sử dụng hàm còn nó chưa thể hiện hết sự cần thiết của hàm này. Lấy một ví dụ sau để bạn dễ hình dung.
Bạn cần phát triển một HTML editor cho người dùng không biết về HTML. Và do đó bạn phát triển tính năng cho phép người dùng thêm mã BB code vào editor khi họ click vào icon trên thanh menu. Ví dụ một BB code như sau:
Thì khi hiển thị bài viết đoạn code trên sẽ chuyển thành mã HTML:
Ngoài ra nếu người dùng quy định độ rộng và dài của ảnh sử dụng mã BB code sau:
Thì khi hiển thị bài viết bạn cần chuyển thành mã HTML như sau:
Và HTML editor của bạn cần phải hỗ trợ thẻ
<img>
, thẻ<a>
, thẻ<h1>
....Khi viết xử lý logic chuyển đổi từ mã BB Code sang HTML chúng ta sẽ cần phải trả về các mã HTML khác nhau cho từng thẻ khác nhau (thẻ
<img>
sẽ không có thẻ đóng, thẻ<a>
thì ngược lại). Ngoài ra số lượng attribute của mỗi thẻ không phải lúc nào cũng cố định và dựa trên lựa chọn của người dùng. Lúc này hàmcall_user_function()
sẽ rất hữu dụng.Đầu tiên bạn có một danh sách các hàm xử lý việc trả về mã HTML tương ứng cho từng thẻ.
Và khai báo các hàm này:
Lúc này khi viết hàm trả về mã HTML bạn sẽ làm như sau:
Với trường hợp trên nếu không sử dụng
call_user_func()
bạn sẽ cần viết rất nhiều logic để tách biệt các trường hợp ứng với mỗi input nhập vào của người dùng.