Code Tu Tam

Hàm is_subclass_of() trong PHP là gì ?

Rate this post

Hàm is_subclass_of() trong PHP có nhiệm vụ kiểm tra xem class hiện tại có class là class truyền vào hay không. Nói cách khác, hàm này để kiểm tra đối tượng truyền vào có phải sub class (class con) của 1 class cụ thể nào đó hay không?

Cú pháp

Cú pháp hàm is_subclass_of() trong PHP như sau:

is_subclass_of ( mixed $object , string $class_name [, bool $allow_string = TRUE ] ) : bool

Tham số truyền vào 

Giá trị trả về

Hàm này trả về TRUE nếu $object là con của $classnameFALSE nếu không phải là con của $classname.

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 interface
interface MyInterface
{
  public function MyFunction();
}

// Định nghĩa class implements interface
class MyClass implements MyInterface
{
  public function MyFunction()
  {
    return "MyClass Implements MyInterface!";
  }
}

// Instantiate the object
$my_object = new MyClass;

// Hoạt động từ phiên bản PHP 5.3.7

if (is_subclass_of($my_object, 'MyInterface')) {
  echo "Yes";
} else {
  echo "No";
}

if (is_subclass_of('MyClass', 'MyInterface')) {
  echo "Yes";
} else {
  echo "No";
}
//Kết quả tương ứng
Yes
Yes
?>

Ứng dụng

Sử dụng is_subclass_of() để kiểm tra trong Class được kế thừa.

<?php
class {};
class extends {};
class extends {};

$foo=new C();
echo ((is_subclass_of($foo,'A')) ? 'true' 'false');
?>

true

Sử dụng một phương thức khác tương tự is_subclass_of() để kiểm tra interface

<?php

interface A_Interface {}
class A implements A_Interface {}

$reflectionA = new ReflectionClass('A');
var_dump(
    $reflectionA->implementsInterface('A_Interface')
);

bool(true)
?>

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 is_subclass_of() 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