2011-02-14 13 views
6

मैं PHP में प्रतिबिंब वर्ग का उपयोग कर रहा हूं, लेकिन मुझे प्रतिबिंब उदाहरण में गुणों के मानों को प्राप्त करने के तरीके के बारे में कोई संकेत नहीं है। हो सकता?PHP प्रतिबिंब वर्ग। गुणों के मूल्य कैसे प्राप्त करें?

कोड:

<?php 

class teste { 

    public $name; 
    public $age; 

} 

$t = new teste(); 
$t->name = 'John'; 
$t->age = '23'; 

$api = new ReflectionClass($t); 

foreach($api->getProperties() as $propertie) 
{ 
    print $propertie->getName() . "\n"; 
} 

?> 

मैं foreach पाश अंदर propertie मान कैसे मिल सकता है?

शुभकामनाओं सहित,

उत्तर

11

कैसे के बारे में

आपके मामले में:

foreach ($api->getProperties() as $propertie) 
{ 
    print $propertie->getName() . "\n"; 
    print $propertie->getValue($t); 
} 

एक sidenote पर रहेगी, क्योंकि आपके वस्तु केवल सार्वजनिक सदस्य हैं, आप बस के रूप में अच्छी तरह से iterate it directly

foreach ($t as $propertie => $value) 
{ 
    print $propertie . "\n"; 
    print $value; 
} 

या उन्हें get_object_vars साथ एक सरणी में लाने सकता है ।

+1

धन्यवाद बहुत, यह काम किया! सादर, –

0

एक और तरीका getDefaultProperties() विधि का उपयोग करना है, यदि आप उस वर्ग को तत्काल नहीं करना चाहते हैं, उदाहरण के लिए।

$api->getDefaultProperties(); 

यहाँ अपना पूरा आप के लिए ...

class teste { 

    public $name; 
    public $age; 

} 

$api = new ReflectionClass('teste'); 
var_dump($api->getDefaultProperties()); 

नोट जो खोज रहे हैं करने के लिए कम उदाहरण है: आप यह भी कहा कि ReflectionClass के अंदर नामस्थान उपयोग कर सकते हैं। उदाहरण के लिए,

$class = new ReflectionClass('Some\Namespaced\Class'); 
var_dump($class->getDefaultProperties()); 
संबंधित मुद्दे