get_class()
sẽ cho tôi lớp cuối cùng của một đối tượng.Xác định thứ bậc lớp của một đối tượng tại thời gian chạy
Tôi muốn biết tất cả chuỗi các lớp cha mẹ. Điều này có thể giải quyết như thế nào?
get_class()
sẽ cho tôi lớp cuối cùng của một đối tượng.Xác định thứ bậc lớp của một đối tượng tại thời gian chạy
Tôi muốn biết tất cả chuỗi các lớp cha mẹ. Điều này có thể giải quyết như thế nào?
Bạn có thể gọi get_parent_class
tục cho đến khi nó trả sai:
function getClassHierarchy($object) {
if (!is_object($object)) return false;
$hierarchy = array();
$class = get_class($object);
do {
$hierarchy[] = $class;
} while (($class = get_parent_class($class)) !== false);
return $hierarchy;
}
Nếu bạn muốn kiểm tra đối với các loại cụ thể, hoặc xây dựng một chức năng để tạo Drilldown mà không sử dụng bất kỳ trong những giải pháp khác, bạn có thể nghỉ mát để 'instanceof' để xác định xem đó là một loại cụ thể là tốt, Nó sẽ là đúng để kiểm tra xem một lớp mở rộng một lớp cha mẹ.
Phần ReflectionClass lớp học của PHP Reflection API có phương thức getParentClass().
Dưới đây là một mẫu nhỏ mã sử dụng nó:
<?php
class A { }
class B extends A { }
class C extends B { }
$class = new ReflectionClass('C');
echo $class->getName()."\n";
while ($class = $class->getParentClass()) {
echo $class->getName()."\n";
}
Bạn có thể sử dụng
class_parents
- Return mọi tầng lớp cha của lớp đưa ra trong một mảngVí dụ:
print_r(class_parents('RecursiveDirectoryIterator'));
chí đầu ra
Array
(
[FilesystemIterator] => FilesystemIterator
[DirectoryIterator] => DirectoryIterator
[SplFileInfo] => SplFileInfo
)