Где я могу получить список значений модификатора отражения?

#php #reflection #introspection

#php #отражение #самоанализ

Вопрос:

Эта функция вернулась 524320 для одного из моих классов. Если я запускаю его через getModifierNames , он сообщает мне:

 >> Reflection::getModifierNames(524320)
array (
  0 => 'abstract',
)
 

Это правильно, но 524320 не является степенью 2, поэтому у него должны быть какие-то другие флаги? На самом деле, если мы посмотрим на его двоичное представление, 10100111 похоже, что у него установлено 5 флагов. Итак, каковы остальные 4, и где я могу найти список всех из них?

Редактировать: теперь я в замешательстве… представление на самом деле 10000000000000100000 , в соответствии с этим. Что имеет смысл, потому что это соответствует «явному абстрактному классу». Ох… Держу пари, что это была проблема переполнения, о которой я сейчас думаю…необходимо изучить немного больше.

Ответ №1:

Смотрите константы ZEND_ACC_ * в http://lxr.php.net/xref/PHP_TRUNK/Zend/zend_compile.h#144

Имейте в виду, что некоторые из них являются внутренними и в любом случае не экспортируются в пространство пользователя. Те, которые экспортируются в пользовательское пространство, можно найти в http://php.net/manual/en/class.reflectionmethod.php и другие классы.