@andreysuha
Что то знаю

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

В 7 пыхе ввели возможность строгой типизации аргументов, можно ли как то указать два типа для одного аргумента? Например что бы аргумент мог быть int или string
  • Вопрос задан
  • 1570 просмотров
Решения вопроса 2
OnYourLips
@OnYourLips
Так нельзя делать с точки зрения дизайна. Заводите два разных метода.
Ответ написан
@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
Проблема в том, что вы не понимаете данную функциональность и пытаетесь использовать ее механически, просто "шоб було".

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

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

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

Войти через центр авторизации
Похожие вопросы
Алгоритмика Москва
от 110 000 до 160 000 руб.
N1.RU Новосибирск
от 100 000 руб.
Living Core Казань
от 50 000 руб.
16 сент. 2019, в 16:51
10000 руб./за проект
16 сент. 2019, в 16:47
25000 руб./за проект
16 сент. 2019, в 16:31
5000 руб./за проект