Hàm method_exists trong PHP là gì ?

05/08/2022 - lượt xem
Chia sẻ
 
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 

  • $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              

    Liên hệ với chúng tôi

    Để lại thông tin để nhận được các bài viết khác

    Rate this post

    Xem thêm nhiều bài tin mới nhất về Kiến thức

    Xem thêm