Code Tu Tam

Hàm method_exists trong PHP là gì ?

Rate this post

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 

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

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              

Exit mobile version