#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 и другие классы.