2010-11-17 26 views

Odpowiedz

5

Można zadzwonić get_parent_class wielokrotnie, aż powróci fałszywe:

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

Jeśli chcesz sprawdzić dla szczególnych rodzajów lub zbudować funkcję do tworzenia drążenia bez użycia jakichkolwiek innych rozwiązań, można uciekać do 'instanceof', aby określić, czy jest to również określony typ, Będzie to prawdą dla sprawdzenia, czy klasa rozszerza klasę nadrzędną.

0

Część klasy ReflectionClass z ma metodę getParentClass().

Oto mała próbka kodu używając go:

<?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

Można użyć

  • class_parents - Powrót wszystkie klasy nadrzędne danej klasy w tablicy

Przykład:

print_r(class_parents('RecursiveDirectoryIterator')); 

wyjście wola

Array 
(
    [FilesystemIterator] => FilesystemIterator 
    [DirectoryIterator] => DirectoryIterator 
    [SplFileInfo] => SplFileInfo 
) 
Powiązane problemy