Hàm is_callable() trong PHP sẽ kiểm tra xem giá trị của biến có thể được gọi như một hàm hay không.
Hàm này có thể xác minh rằng một biến chứa tên hàm hợp lệ hoặc nó chứa một mảng, với một đối tượng và tên phương thức.
is_callable ( mixed$var
[, bool$syntax_only
=FALSE
[, string&$callable_name
]] ) : bool
$var
là biến cần kiểm tra.$syntax_only
là tham số, nếu mang giá trị TRUE hàm sẽ chỉ kiểm tra những biến có giá trị có thể được đặt làm tên của một hàm hoặc một phương thức, nó sẽ loại bỏ các giá trị không phải là chuỗi hoặc mảng.&$callable_name
là tên hàm hoặc tên phương thức, nếu hàm chưa được định nghĩa, nó sẽ mang giá trị tên của biến $var.– Nếu biến có thể được gọi trả về TRUE.
– Nếu biến không thể được gọi thì trả về FALSE.
code:
function showFunction()
{
}
$functionVariable = 'showFunction';
var_dump(is_callable($functionVariable, true, $callable_name));
echo '<br />';
echo $callable_name;
kết quả:
bool(true)
showFunction
code:
class showClass {
function showMethod()
{
}
}
$object = new showClass();
$var = array(
$object,
'showMethod'
);
var_dump(is_callable($var, true, $callable_name));
echo '<br />';
echo $callable_name;
});
Kết quả:
bool(true)
Hàm is_callable() trong PHPshowClass::showMethod
<?php namespace foo\bar\baz; function something () { return (42); } var_dump (is_callable ('something')); // false var_dump (is_callable ('foo\bar\baz\something')); // true ?>
– Rất dễ măc phải vấn đề này, nhưng nếu bạn chỉ cần thêm __NAMESPACE__ vào chuỗi tên hàm thì bạn sẽ ổn trong hầu hết các trường hợp.
Nếu lớp đích có hàm ma thuật __call () được triển khai, thì is_callable sẽ LUÔN trả về TRUE cho bất kỳ phương thức nào bạn gọi nó.
is_callable không đánh giá logic bên trong của bạn bên trong triển khai __call () (và điều này là tốt).
Do đó, mọi tên phương thức đều có thể gọi được cho các lớp như vậy.
Do đó, nó là SAI để nói (như ai đó đã nói):
… is_callable sẽ xác định chính xác sự tồn tại của các phương thức được tạo bằng __call …
<?php class TestCallable { public function testing() { return "I am called."; } public function __call($name, $args) { if($name == 'testingOther') { return call_user_func_array(array($this, 'testing'), $args); } } } $t = new TestCallable(); echo $t->testing(); // Output: I am called. echo $t->testingOther(); // Output: I am called. echo $t->working(); // Output: (null) echo is_callable(array($t, 'testing')); // Output: TRUE echo is_callable(array($t, 'testingOther')); // Output: TRUE echo is_callable(array($t, 'working')); // Output: TRUE, expected: FALSE ?>
Các bạn có thể xem chi tiết hơn trên php.net.
Hi vọng với bài viết này, bạn đã hiểu rõ ứng dụng của hàm is_callable() trong PHP. Nếu bạn thấy bài viết hay và có ý nghĩa hãy like và chia sẻ bài viết này để mọi người cùng nhau học tập nhé.
Cảm ơn các bạn đã ghé thăm codetutam.com
Bình luận: