Возвращение информации об ошибке

Задача
Необходимо показать ошибку, произошедшую в результате работы функции.

Решение
Возвращаем значение false:
function lookup($name) {
if (empty($name)) { return false; }
...
}
if (false !== lookup($name)) { /* реакция на результат поиска */ }

Обсуждение
В PHP значения, не относящиеся к истинным, не стандартизованы и легко могут вызвать ошибки. Поэтому лучше всего, если все ваши функции возвращают предопределенное ключевое слово false, т. к. оно больше подходит для проверки логического значения.

Другие возможности – это '' или 0. Однако, хотя все три значения оцениваются в операторе if как неистинные, между ними есть существенная разница. Кроме того, иногда возвращаемое значение 0 представляет значащий результат, а требуется еще возвратить сообщение об ошибке.

Например, функция strpos() возвращает позицию в строке первого вхождения подстроки. Если подстрока не найдена, то strpos() возвращает значение false, а если найдена, – позицию в виде целого числа. Итак, определить расположение подстроки можно следующим образом:

if (strpos($string, $substring)) { /* нашли! */ }

Однако если $substring обнаружена точно в начале строки $string, то возвращается значение 0.


К сожалению, внутри оператора if это значение оценивается как false, поэтому условие не выполняется. Ниже показан корректный способ обработки значения, возвращаемого функцией strpos():

if (false !== strpos($string, $substring)) { /* нашли! */ }

Кроме того, значение false всегда будет ложным – в текущей версии PHP и во всех последующих. Для других значений это не гарантируется. Например, в PHP 3 функция empty('0') возвращала значение true, но оно было заменено на false в PHP 4.

Оцените статью: (0 голосов)
0 5 0

Статьи из раздела PHP на эту тему:
Возвращение более одного значения
Возвращение значений по ссылке
Вызов переменных функций
Доступ к глобальной переменной внутри функции
Доступ к параметрам функций

Вернуться в раздел: PHP / 6. Функции