Какой тип указывается для флагов в сигнатуре функции для PHP?
На странице функции array_change_key_case в документации PHP указана такая сигнатура:
array_change_key_case(array $array, int $case = CASE_LOWER): array
В ней всё понятно, кроме int перед $case. Почему его тип указан как int? Внешне доступные флаги на число не похожи:
- CASE_LOWER
- CASE_UPPER
Нужно ли указывать int как тип для флагов всегда или это от чего-то зависит? Если он указывается всегда, то известна ли причина этого или это традиция? Или может быть это опечатка и у флагов должен быть указан другой тип?
Ответы (1 шт):
Оказалось, что предопределенные флаги, которые используются в функциях - это обычные константы (только определяются они не в коде, а в исходниках РНР). И к ним можно обратиться так же, как к обычным константам - через echo, var_dump, print_r и пр. Плюс можно посмотреть их всех через get_defined_constants(). CASE_LOWER и CASE_UPPER из примера тоже там будут.
Поэтому, отвечая на вопрос прямо:
- Нужно ли указывать int как тип для флагов всегда или это от чего-то зависит?
- Тип константы, которая используются в виде флага, зависит от её предназначения, и поэтому он может отличаться в зависимости от функции и необязательно будет int. Посмотреть тип той или иной константы можно с помощью var_dump(константа).
После ответа на основной вопрос, остальные теряют актуальность.