Hà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
Cú pháp hàm method_exists() trong PHP như sau:
method_exists ( mixed $object , string $method_name ) : bool
Tham số truyền vào
- $object là tên class cần kiểm tra.
- $method_name là phương thức cần kiểm tra.
Giá trị trả về
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.
Lưu ý
Từ phiên bản PHP 5.3.7 hàm
Ví dụ minh họa
<?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
Sử dụng với Interface
<?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";
}
?>
Ứng dụng
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'))); ?>
Ứng dụng
<?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 đó.
Các hàm liên quan
- function_exists() – Kiểm tra sự tồn tại của một function.
- is_callabke() – Kiểm tra giá trị của một biến có phải là 1 hàm hay không.
- class_exists() – Kiểm tra xem một Class có tồn tại chưa.
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