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

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

Решение
Возвращаем значение 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.
Теги:
false, strpos, значения, substring, string, Однако, результат, найдена, нашли, lookup, функция, подстроки, позицию, Например, возвращает, empty, Кроме, функции, целого, первого, строке, подстрока, вхождения, определить, можно, следующим, образом, числа, информации, обнаружена, обработки, возвращала, гарантируется, версии, текущей
Добавлено: 21 Июля 2018 13:35:07 Добавил: Андрей Ковальчук Нравится 0
Добавить
Комментарии:
Нету комментариев для вывода...