Какой тип указывается для флагов в сигнатуре функции для 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 шт):

Автор решения: Arcean

Оказалось, что предопределенные флаги, которые используются в функциях - это обычные константы (только определяются они не в коде, а в исходниках РНР). И к ним можно обратиться так же, как к обычным константам - через echo, var_dump, print_r и пр. Плюс можно посмотреть их всех через get_defined_constants(). CASE_LOWER и CASE_UPPER из примера тоже там будут.

Поэтому, отвечая на вопрос прямо:

  • Нужно ли указывать int как тип для флагов всегда или это от чего-то зависит?
  • Тип константы, которая используются в виде флага, зависит от её предназначения, и поэтому он может отличаться в зависимости от функции и необязательно будет int. Посмотреть тип той или иной константы можно с помощью var_dump(константа).

После ответа на основной вопрос, остальные теряют актуальность.

→ Ссылка