2010-11-17 13 views
8

get_class() मुझे किसी ऑब्जेक्ट का अंतिम श्रेणी देगा।रनटाइम पर किसी ऑब्जेक्ट के क्लास पदानुक्रम को निर्धारित करना

मैं अभिभावक वर्गों की सभी श्रृंखला जानना चाहता हूं। यह कैसे किया जा सकता है?

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

उत्तर

5

आप जब तक यह रिटर्न झूठीget_parent_class बार-बार कह सकते हैं यह निर्धारित करने के लिए 'exampleof' करने के लिए कि यह एक विशिष्ट प्रकार है या नहीं, यह जांचने के लिए सच होगा कि कोई वर्ग अभिभावक वर्ग को विस्तारित करता है या नहीं।

1

आप विशिष्ट प्रकार के लिए जाँच, या अन्य समाधान के किसी भी उपयोग के बिना विश्लेषण बनाने के लिए एक समारोह का निर्माण करना चाहते हैं, तो आप सहारा सकता है:

0

ReflectionClassPHP Reflection API के वर्ग भाग में getParentClass() विधि है।

यहां एक छोटा कोड इसे प्रयोग नमूना है:

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

आप उपयोग कर सकते हैं

  • class_parents - एक सरणी में दिए गए वर्ग के सभी माता-पिता कक्षाएं लौटें

उदाहरण:

print_r(class_parents('RecursiveDirectoryIterator')); 

इच्छा उत्पादन

Array 
(
    [FilesystemIterator] => FilesystemIterator 
    [DirectoryIterator] => DirectoryIterator 
    [SplFileInfo] => SplFileInfo 
) 
संबंधित मुद्दे