2012-03-22 6 views
1

Чтобы имитировать перечисления в PHP, мне нравится использовать константы класса.PHP Class Constants Array Cast

например.

class FRUIT 
{ 
    const apple = 1; 
    const orange = 2; 
    const lemon = 3; 
    const pear = 4; 
}; 

У меня есть случай, когда я хотел бы передать этот класс в массив, чтобы заполнить список выбора. Однако из-за того, что константы класса ведут себя статически, не работает, например. (array)(new FRUIT()); и метод get_object_vars().

Каков наилучший способ обойти это? Нужно ли создавать внутреннюю функцию для итерации констант и возврата массива?

ответ

7

Нужно ли создать внутреннюю функцию для итерации констант и возврата массива?

Nope! Вы можете использовать Reflection, чтобы сделать это:

$r = new ReflectionClass('FRUIT'); 
$constants = $r->getConstants(); 

Более подробную информацию here

+1

Я не знал об этом - большое спасибо! –