Hướng đối tượng trong PHP: Một số hàm lấy thông tin

  • PHP and Mysql
  • 29 tháng 07 2012
  • bởi Văn Khương
  • 0 Comments

PHP đã cung cấp một số hàm để chúng ta lấy thông tin của đối tượng, điều này sẽ giúp ích khi chúng ta làm việc với những mô hình lớn và sử lý những tính huống cần thiết. Bài viết này sẽ giới thiệu về các hàm như get_class, get_parent_class, get_class_vars, get_class_methods, get_object_vars.

get_class()

Hàm này sẽ trả về tên lớp của đối tượng, chúng ta sẽ xét đến 2 trường hợp 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

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. Xem ví dụ sau để hiểu rõ điều này:

class ParentClass{
    public function getClass1(){
      return get_class($this);
    }
    public function getClass2(){
      return get_class();
    }
}
class ChildClass extends ParentClass{}
$cc = new ChildClass();
echo get_class($cc); // ChildClass
echo $cc->getClass1(); // ChildClass
echo $cc->getClass2(); // ParentClass

get_class_methods()

Hàm sẽ trả về một mảng các phần tử là tên các phương thức của đối tượng, đối số của hàm có thể là đối tượng hoặc tên lớp.

get_class_vars()

Hàm sẽ trả về một mảng phần tử với index và value của từng phần tử là tương ứng với từng thuộc tính và giá trị trong lớp, đối số của hàm là chuỗi tên lớp.

get_object_vars()

Hàm này chức năng cũng tương tự như get_class_vars() tuy nhiên có sự khác biệt là hàm get_object_vars() có đối số là đối tượng nếu sử dụng ở ngoài lớp  và đối số là $this nếu sử dụng ở trong lớp, có một điểm khác biệt quan trọng nữa là get_class_vars() chỉ trả về những thuộc tính với giá trị mặc định trong lớp, get_object_vars thì trả về những thuộc tính với giá trị có thể được thay đổi bên ngoài lớp. Xem ví dụ sau để hiểu rõ điều này:

class ParentClass{
    public $name = 'Khuong Van Ngo';
}
class ChildClass extends ParentClass{}
$cc = new ChildClass();
$cc->name = 'Ngo Van Khuong';
print_r(get_class_vars('ChildClass'));  // Array([name] =>Khuong Van Ngo)
print_r(get_object_vars($cc)); // Array([name] =>Ngo Van Khuong)

get_parent_class()

Hàm trả về tên lớp cha của đối tượng, đối số là đối tượng nếu ở ngoài lớp, nếu trong lớp thì không cần đối số.

  • Chia sẻ
comments powered by Disqus