2010-01-07 14 views
5

मैं बस का उपयोग नहीं कर सकते get_class_vars() क्योंकि मैं इसे 5.0.3 से पहले PHP संस्करण के साथ काम करने की जरूरत है (http://pl.php.net/get_class_vars Changelog देखें)कक्षा के सार्वजनिक गुण कैसे प्राप्त करें?

वैकल्पिक रूप से: मैं कैसे जांच कर सकते हैं संपत्ति सार्वजनिक है?

+0

मुझे लगता है कि यह केवल PHP 5.0.2 में एक समस्या होगी। PHP 5.0.1 और इससे पहले, संरक्षित और निजी गुण लौटाए जाते हैं लेकिन नल बाइट ('x x'') के साथ उपसर्ग किया जाता है जिसे रेगेक्स से बाहर रखा जा सकता है। – MrWhite

उत्तर

7

प्रतिबिंब का उपयोग करके यह संभव है।

<?php 

class Foo { 
    public $alpha = 1; 
    protected $beta = 2; 
    private $gamma = 3; 
} 

$ref = new ReflectionClass('Foo'); 
print_r($ref->getProperties(ReflectionProperty::IS_PUBLIC)); 

परिणाम है:

Array 
(
    [0] => ReflectionProperty Object 
     (
      [name] => alpha 
      [class] => Foo 
     ) 

) 
3

या आप यह कर सकते हैं:

$getPublicProperties = create_function('$object', 'return get_object_vars($object);'); 
var_dump($getPublicProperties($this)); 
1

आप अपने वर्ग आइटरेटरएग्रीगेट इंटरफ़ेस

class Test implements IteratorAggregate 
{ 
    public PublicVar01 = "Value01"; 
    public PublicVar02 = "Value02"; 
    protected ProtectedVar; 
    private PrivateVar; 

    public function getIterator() 
    { 
     return new ArrayIterator($this); 
    } 
} 


$t = new Test() 
foreach ($t as $key => $value) 
{ 
    echo $key." = ".$value."<br>"; 
} 

हो जाएगा ताकि उत्पादन को लागू कर सकते हैं :

PublicVar01 = Value01 
PublicVar02 = Value02  
संबंधित मुद्दे