Проверка типа переменной - PullRequest
3 голосов
/ 06 марта 2011

У меня есть методы, параметры которых могут обрабатывать только определенные типы переменных. У меня есть несколько идей о том, как проверить эти типы, и мне нужна ваша помощь, чтобы выбрать лучший способ.
Я мог бы:

  • Просто верните false, если один из типов переменных неверен, не давая пользователю знать, что происходит. Кроме того, если вывод функции обычно не проверяется пользователем - например, ob_start() - они не узнают, что это даже неправильно;
  • Бросить пользовательский InvalidArgumentException, говорящий «Тип параметра X неверен». Таким образом, я должен проверить каждый параметр, делая код нечитаемым. Кроме того, исключение должно быть перехвачено, и мне не нравятся эти try...catch в моем коде.
  • Звоните error_log(). Но все же я должен проверить каждый параметр.

Какой вариант вы бы выбрали? Зачем? В противном случае, у вас есть идея получше?


UPDATE
Когда я говорю о типах, я имею в виду следующее: http://php.net/manual/en/language.types.php

Ответы [ 2 ]

0 голосов
/ 06 марта 2011

Единственный способ проверить тип в php - использовать встроенную функцию.Вы можете найти список здесь: http://www.php.net/manual/en/ref.var.php Это настоящая боль в заднице, но у вас нет выбора.

Для самой проверки я проверю все типы параметров в началефункцию и выкинь ошибку если нет.Тогда вы всегда можете добавить отладочный файл print_r для обнаружения виновного.

0 голосов
/ 06 марта 2011

Если вы говорите с аргументами, переданными в вашем коде, конечно, вы ДОЛЖНЫ регистрировать ошибки и исправлять все возможные ошибки в вашем коде.

Пример:

function(){
    if (!is_array($arg))
       trigger_error();
}

ИЛИ

Используя только объекты, вы можете указать тип аргументов

Пример:

function yay(Class1 $arg1, Class2 $arg2){
    //That's it!
}
...