Тип класса, instance of

Рейтинг: 1Ответов: 1Опубликовано: 27.02.2011

Есть функция:

function something($param = false) {

}

Я хочу задать определенный тип $param на вход функции. Если это массив (Array), то это работает:

function something(Array $param = array()) {

}

А если это Boolean, то почему-то нет:

...must be an instance of boolean, boolean given...

Ответы

▲ 2Принят

Сейчас вы присвоили аргументам значения по умолчанию.

Если не ошибаюсь, то где-то в документации сказано, что типизировать аргументы можно только массивом или классом. Простыми типами: строкой, логикой, числом и иными нельзя. Он, видимо, воспринимает название типов как названия классов и потому ругается, но я не уверен.

Для проверки надо написать код внутри функции, который бы проверял тип переменной с помощью соответствующих функций (is_array, is_string и т.д.) и генерировал бы исключение при несовпадении.

Подтверждение:

Type Hints can only be of the object and array (since PHP 5.1) type. Traditional type hinting with int and string isn't supported.