wiki

View on GitHub

3.1 Class Information Functions

Nếu bạn muốn tìm kiếm hoặc thông kê các thông tin liên quan đến một class bất kỳ, các function này sẽ cho bạn hầu hết các thông tin của class mà bạn muốn. Nhưng có một cách khác đó là sử dụng API nhưng tôi sẽ không đề cập tới ở đây.

3.1.1 Kiểm tra sự tồn tại của một Class

Khi bạn cần kiểm tra một class nào đó có tồn tại hay không thì bạn có thể sử dụng hàm class_exists(). Như ví dụ dưới đây:

<?php
   if (class_exists('MyClass')) {
      $myclass = new MyClass();
   }
?> 

Hàm class_exists() trả về TRUE nếu MyClass là một lớp đã được định nghĩa, nếu không là sẽ trả về FALSE.

3.1.2 Tìm các class đã được khai báo trong script hiện tại.

Trong một số trường hợp bạn cần kiểm tra xem class nào đó được định nghĩa chưa. Bạn có thể sử dụng hàm get_declared_classes(). Hàm get_declared_classes() trả về một mảng tên của các lớp đã được khai báo trong script hiện tại.

<?php
   print_r(get_declared_classes());
?> 

Bạn sẽ thấy trên màn hình một danh sách các class hiện có sẵn.

3.1.3 Kiểm tra sự tồn tại của Methods and Properties.

Để kiểm tra sự tồn tại của một Methods hoặc Property có tồn tại trong một class, bạn có thể sử dụng hàm method_exists() và property_exists(). Xin lưu ý rằng các hàm này thực hiện được khi các thuộc tính và phương thức được định nghĩa là plubic.

3.1.4 Kiểm tra kiểu của class

Trong một số trường hợp bạn cần phải kiểm tra lớp cha hoặc lớp của một đối tượng nào đó, PHP cung cấp hàm is_a() kết quả trả về là true/false.

<?php
    is_a ( $object, $class_name )
?>

Trả về TRUE nếu đối tượng đã cho là của class_name này hoặc có lớp cha là lớp class_name, nếu không là trả về FALSE. Ví dụ:

<?php
    class HoangBK
       {
          var $HoangBK = 'fromatoz';
       }
       
       // tạo một đối tượng mới
       $WF = new HoangBK();
       
       if (is_a($wf, 'HoangBK')) {
          echo "\$wf vẫn là HoangBK";
       }
?>

Output: $wf vẫn là HoangBK

3.1.5 Tìm tên các class

Trong ví dụ trước chúng ta đã kiểm tra được các đối tượng có thuộc một class mà ta biết trước không. Nếu bạn muốn biết tên của class của đối tượng thì phải làm sao? bạn đừng lo lắng PHP hỗ trợ cho chúng ta hàm get_class().

<?php
    class ParentClass{}
    class ChildClass extends ParentClass{}
    $cc = new ChildClass();
    echo get_class($cc)
?>

Kết quả trả về là ChildClass (dĩ nhiên rồi). Tuy nhiên hàm get_class() lại có 2 cách sử dụng đó là sử dụng bên trong lớp và bên ngoài lớp.

Nếu sử dụng bên ngoài lớp thì đối số của hàm sẽ là đối tượng cần lấy thông tin(getClass1() ở ví dụ dưới).

Nếu sử dụng bên trong lớp thì hàm có thể không cần đối số khi này hàm sẽ trả về tên lớp chứa nó, trường hợp nếu hàm sử dụng $this làm đối số thì hàm sẽ trả về tên lớp ở đối tượng nào gọi nó ví dụ ta gọi nó ở các lớp kế thừa thì hàm sẽ trả về tên lớp kế thừa (getClass2() ở ví dụ dưới). Xem ví dụ sau để hiểu rõ điều này:

<?php
    class ParentClass{
        public function getClass1(){
          return get_class($this);  //using "$this"
        }
        public function getClass2(){
          return get_class();  //using "no $this"
        }
    }
    class ChildClass extends ParentClass{}
    $cc = new ChildClass();
    echo get_class($cc); // Output: ChildClass
    echo $cc->getClass1(); // Output: ChildClass
    echo $cc->getClass2(); // Output: ParentClass
?>