Вопрос насчет return в PHP

Статус: Offline
Реєстрація: 16.08.2014
Повідом.: 310
Вопрос насчет return в PHP

Приветствую!
Сабж настолько замучал и въелся в голову, что пришлось даже немного сон отложить. Ситуация вот, собственно, в чем: Есть к примеру две функции - key($x) и current($x). При одинаковых ситуациях (Out of Range, Empty Array) в мануале написано, что одна возвращает NULL, а вторая FALSE. Пытаюсь понять логику, почему именно так. Начал копать и накопал, что для php < 4.2.0 многие функции в нештатной ситуации возвращали NULL, с 5-й версии они стали возвращать уже FALSE. А с версии 5.3.0 при некорректных аргументах возвращают снова NULL. Например array_search.
У меня вот вопрос. Есть ли какой-то вообще стандарт для возвращаемых значений? Мне, например удобно для данных возвращать NULL или сами данные, а для вопросов возвращать только boolean-значения тем самым не мешая их с данными. Сам код становится немного симпатичнее и компактнее, тем более сама функция автоматом при завершении вернет NULL. Но насколько это корректно я уже и не знаю. Хотелось бы делать по-правильному. Для многих стандартных функций я написал обертки, чтобы можно было их вкладывать друг в друга. Но для этого надо все привести к единому виду и подобрать необходимый контекст. Хотелась бы услышать любое ваше мнение.
ps. Касательно key() и current() считаю правильным вернуть NULL, так как выход за пределы ошибкой, по сути, не считается. Это я написал, чтобы до конца раскрыть ход мыслей. У меня есть функция i2v(), которая возвращает значение массива по его смещению. Вот никак рука не поднимается написать return FALSE в случае запредельного индекса, особенно, когда применяю ее для списка аргументов :(
Исключения или синтаксический сахар на простейшие функции вешать не хочу, так как в 99% случаях это просто никогда не понадобится. Сорри за большой текст.
 
тут вопрос в том, а является ли NULL для app тоже данными (аргументом функции)? и тогда Ваша проблема кажется надуманной ;)
 
Спасибо. А можете пояснить смысл Вашего ответа более развернуто? Хочу убедиться, что я понял все правильно. Это не то, чтобы проблема. Я, напримел, хотел бы знать: Является ли "плохим" стилем возвращение NULL, как в значении "функция не может вернуть корректный результат"? Является ли плохим стилем не писать return null в последней строке функции? Или все-таки FALSE? Я рассматриваю и манипулирую возвращаемым значением не как просто данными, а как "результатом". Такая абстракция решает мне массу проблем при проектировании.
 
Является ли "плохим" стилем возвращение NULL, как в значении "функция не может вернуть корректный результат"?

null (NULL) – это один из типов в php, применяя его таком образом, Вы исключаете его применение как значение для данных. Но если оно Вам не надо и для Вас значение элемента в array равное NULL сравнимо с "функция не может вернуть корректный результат" (i2v()), то почему бы и нет.
 
Спасибо большое! Пытаюсь еще раз "переварить". Такие вещи сложно носить в себе, проще посоветоваться, иначе голова "распухает" буквально за минуты. Нарушается покой, аппетит и сон :)
На самом деле определение функции i2v имеет такой вид: i2v($i, $arr, & $real = true), где в $real возвращается результат проверки count($arr) > 0
Получается, что все решает "контекст". А путаница с возвращаемыми значениями для key() и current() всего-лишь "плохое наследие". Еще раз спасибо!
 
Назад
Зверху Знизу