@andreysuha
Что то знаю

Можно ли указать два типа для аргумента?

В 7 пыхе ввели возможность строгой типизации аргументов, можно ли как то указать два типа для одного аргумента? Например что бы аргумент мог быть int или string
  • Вопрос задан
  • 1899 просмотров
Решения вопроса 1
@green_goo
Нет, только если в аннотациях
/**
 * @param string|int $a
 */
function test($a) {}
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
php666
@php666
PHP-макака
На самом деле вопрос лишен практического смысла.

PHP в большинстве случаев всем оперирует на уровне строк. Числовые параметры из запроса или из СУБД - всё приходит в виде строк. Числовые типы данных нужны для арифметических операций, значений констант, операций с массивами (хотя и там можно обойтись строками).

Если для функции РЕАЛЬНО важен передаваемый тип данных, например только int, то и надо передавать int. Точка. И писать явно type hint = int.

В ином случае просто не надо описывать type hint, а сделать проверку в теле функции/метода:

if (!is_numeric($var)) throw new Exception....

Автор же, используя 7 версию и используя подсказки типов, хочет вернуть всё на уровень PHP4, сам не понимая смысла своих действий.
Ответ написан
Комментировать
FanatPHP
@FanatPHP
Чебуратор тега РНР
Проблема в том, что вы не понимаете данную функциональность и пытаетесь использовать ее механически, просто "шоб було".

Так никогда не надо делать. Любой механизм надо применять только если вы понимаете, как с ним работать и зачем он нужен.

В данном случае строгая типизация как раз и служит для того, чтобы не было винегрета из типов. То есть вы хотите строго противоположного. Для начала разберитесь, что такое строгая типизация, и нужна ли она вам.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы