2010-01-07 7 views
5

benBir sınıfın genel özellikleri nasıl edinilir? Nasıl mülkiyet kamu olup olmadığını kontrol edebilirsiniz: Ben 5.0.3 daha erken PHP sürümü ile çalışmak gerekir, çünkü

Alternatif (http://pl.php.net/get_class_vars Changelog bakınız) basitçe get_class_vars() kullanamıyorum?

+0

Bu sorunun yalnızca PHP 5.0.2'de bir sorun olacağını düşünüyorum. PHP 5.0.1 ve daha önceki sürümlerde, korunan ve özel özellikler döndürülür, ancak bir regex ile hariç tutulabilen nul bayt ('\ x00') ile öneklenir. – MrWhite

cevap

7

Bu yansıma kullanılarak mümkündür.

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

) 
3

Yoksa bunu yapabilirsiniz:

<?php 

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

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

sonucudur

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

Sen sınıf çıktısı verir IteratorAggregate arayüzünü

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

uygulamak yapabilirsiniz :

PublicVar01 = Value01 
PublicVar02 = Value02  
İlgili konular