Mục lục
ToggleHàm method_exists() trong PHP có nhiệm vụ xem trong Object hoặc một Class có phương thức nào đó không. Hàm method_exists đôi khi hay bị nhầm với function_exists. Tuy nhiên hàm method exist là để kierm tra 1 hàm/phương thức tồn tại trong 1 đối tượng/class. Với hàm function_exists thì kiểm tra hàm ở dạng global (không gắn với 1 đối tượng nào) có tồn tại hay không.
Cú pháp hàm method_exists() trong PHP như sau:
method_exists ( mixed $object , string $method_name ) : bool
Hàm này trả về TRUE nếu phương thức tồn tại và FALSE nếu không tồn tại.
Từ phiên bản PHP 5.3.7 hàm
<?php
// Định nghĩa class cha
class WidgetFactory
{
var $oink = 'moo';
}
// Định nghĩa class con
class WidgetFactory_Child extends WidgetFactory
{
var $oink = 'oink';
}
// Khởi tạo 2 đối tượng
$WF = new WidgetFactory();
$WFC = new WidgetFactory_Child();
if (is_subclass_of($WFC, 'WidgetFactory')) {
echo "yes";
} else {
echo "no";
}
if (is_subclass_of($WF, 'WidgetFactory')) {
echo "yes";
} else {
echo "no";
}
// usable only since PHP 5.0.3
if (is_subclass_of('WidgetFactory_Child', 'WidgetFactory')) {
echo "yes";
} else {
echo "no";
}
?>
Bạn có thể thấy với ví dụ trên class WidgetFactory_Child là class kế thừa từ class WidgetFactory vì vậy kết quả sẽ là
yes no yes
<?php
// Định nghĩa một interface
interface MyInterface
{
public function MyFunction();
}
//Định nghĩa một class implements interface MyInterface
class MyClass implements MyInterface
{
public function MyFunction()
{
return "MyClass Implements MyInterface!";
}
}
// Instantiate the object
$my_object = new MyClass;
if (is_subclass_of($my_object, 'MyInterface')) {
echo "Yes, \$my_object is a subclass of MyInterface\n";
} else {
echo "No, \$my_object is not a subclass of MyInterface\n";
}
// Test using a string of the class name
if (is_subclass_of('MyClass', 'MyInterface')) {
echo "Yes, MyClass is a subclass of MyInterface\n";
} else {
echo "No, MyClass is not a subclass of MyInterface\n";
}
?>
Sử dụng method_exists() để kiểm tra trong Class được kế thừa.
<?php class ParentClass { function doParent() { } } class ChildClass extends ParentClass { } $p = new ParentClass(); $c = new ChildClass(); // all return true var_dump(method_exists($p, 'doParent')); var_dump(method_exists($c, 'doParent')); var_dump(is_callable(array($p, 'doParent'))); var_dump(is_callable(array($c, 'doParent'))); ?>
<?php if (method_exists($myinstance,'themethod')) echo 'ok'; ?> <?php if (is_callable(array('theclassname','themethod'))) echo 'ok'; ?>
Trong ví dụ trên bạn có thể thấy việc sử dụng method_exists() để kiểm tra một thể hiển của Class và is_callable() để kiểm tra qua tên class đó.
Hi vọng với bài viết này, bạn đã hiểu rõ cách sử dụng hàm method_exists() trong PHP. Nếu thấy bài viết hay và ý nghĩa, hãy like và chia sẻ với bạn bè để mọi người cùng nhau học tập nhé. Cảm ơn bạn đã ghé thăm codetutam.com
Bình luận: