2010-11-17 25 views

Trả lời

5

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; 
} 
1

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ẹ.

0

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"; 
} 

Run the code

26

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ảng

Ví dụ:

print_r(class_parents('RecursiveDirectoryIterator')); 

chí đầu ra

Array 
(
    [FilesystemIterator] => FilesystemIterator 
    [DirectoryIterator] => DirectoryIterator 
    [SplFileInfo] => SplFileInfo 
) 
Các vấn đề liên quan