Php: Как перечислить статические поля / свойства через отражение? - PullRequest
1 голос
/ 03 июля 2011

Допустим, у меня есть этот класс:

class Example {    
    public static $FOO = array('id'=>'foo', 'length'=>23, 'height'=>34.2);
    public static $BAR = array('id'=>'bar', 'length'=>22.5, 'height'=>96.223);
}

Как я могу использовать отражение, чтобы получить список статических полей? (Что-то вроде массива ('$ FOO', '$ BAR')?)

1 Ответ

1 голос
/ 04 июля 2011

Вы хотите использовать [ReflectionClass][1]. Функция getProperties() вернет массив объектов ReflectionProperty. У объекта ReflectionProperty есть метод isStatic(), который сообщит вам, является ли свойство статическим или нет, и метод getName(), который возвращает имя.

Пример:

<?php

class Example {    
    public static $FOO = array('id'=>'foo', 'length'=>23, 'height'=>34.2);
    public static $BAR = array('id'=>'bar', 'length'=>22.5, 'height'=>96.223);
}

$reflection = new ReflectionClass('Example'); 
$properties = $reflection->getProperties();
$static = array();

if ( ! empty($properties) )
  foreach ( $properties as $property )
    if ( $property->isStatic() )
      $static[] = $property->getName();

print_r($static);
...