Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Что лучше возвращать из функции/метода при ошибке 
:(
    Опции темы
Gold Dragon
Дата 20.9.2012, 10:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Призрачный
****


Профиль
Группа: Экс. модератор
Сообщений: 6753
Регистрация: 1.3.2004
Где: Россия, Тамбов

Репутация: 10
Всего: 71



собственно вариантов не так много... 
Код

//......

return false

//......

return null

//......

return 0


Может вопрос и философский, но всё же... Я вот смотрю что PHP переходит на возврат NULL.. тем более есть is_null()

Что думаете?

Это сообщение отредактировал(а) Gold Dragon - 20.9.2012, 10:27


--------------------
Нельзя жить в прошлом, оно уже прошло.
Нельзя жить в будущем, оно ещё не наступило.
Нужно жить в настоящем, помня прошлое и думая о будущем!
PM MAIL WWW ICQ   Вверх
Fortop
Дата 20.9.2012, 10:46 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2200
Регистрация: 13.11.2007
Где: Донецк

Репутация: 20
Всего: 42



null - это отсутствие чего-либо.

Если у вас функция/метод не возвращает данные, то достаточно 2х состояний true/false независимо от того была ли ошибка или нет.
Если у вас есть данные, то имеем 3 состояния - данные/нет данных/ошибка

Вместо "нет данных" отлично подходит null или array()
Для ошибки false.



Усложняем.

Считаем что true/false это данные.
Тогда нам нужно как-то сигнализировать об ошибке, поэтому можем использовать третье состояние для этого.


Для методов вообще все просто. throw Exception 
и все.


--------------------
Мир это Я.
Живее всех живых.
PM MAIL   Вверх
Gold Dragon
Дата 20.9.2012, 10:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Призрачный
****


Профиль
Группа: Экс. модератор
Сообщений: 6753
Регистрация: 1.3.2004
Где: Россия, Тамбов

Репутация: 10
Всего: 71



я сейчас не беру Exception, это совсем другой случай... Я говорю о результате, т.е. Если всё прошло удачно и данные есть то .... Если нет NULL...

Просто хочется узнать что народ больше применяет на практике. С другой стороны что лучше/быстрее/правильнее/красивее проверять? 
Код

if (myFunc === false){}

или 
Код

if (is_null(myFunc)){}


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

Добавлено через 14 минут и 42 секунды
не выдержал smile Вот маленький тест на скорость, можете посмотреть

Код

for($y = 0; $y < 5; $y++){
    echo 'Тест № ' . $y;
    $sysstart = microtime(true);
    for($i = 0; $i < 100000; $i++){
        $a = false;
        if($a === false){
        }
    }
    echo ' - ' . round((microtime(true) - $sysstart), 5);

    $sysstart = microtime(true);
    for($i = 0; $i < 100000; $i++){
        $a = null;
        if(is_null($a)){
        }
    }
    echo ' - ' . round((microtime(true) - $sysstart), 5);

    $sysstart = microtime(true);
    for($i = 0; $i < 100000; $i++){
        $a = 0;
        if($a === 0){
        }
    }
    echo ' - ' . round((microtime(true) - $sysstart), 5);
    echo '<hr>';
}




--------------------
Нельзя жить в прошлом, оно уже прошло.
Нельзя жить в будущем, оно ещё не наступило.
Нужно жить в настоящем, помня прошлое и думая о будущем!
PM MAIL WWW ICQ   Вверх
baldina
Дата 20.9.2012, 11:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3433
Регистрация: 5.12.2007
Где: Москва

Репутация: 26
Всего: 101



лучше - что очевидно. false (и тем более null) не самый лучший в мире способ, но так поступает большинство встроенных функций.
так что myFunc === result

Добавлено через 1 минуту и 2 секунды
Цитата(Gold Dragon @  20.9.2012,  10:56 Найти цитируемый пост)
я сейчас не беру Exception

возьми, все упростится
PM MAIL   Вверх
Gold Dragon
Дата 20.9.2012, 11:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Призрачный
****


Профиль
Группа: Экс. модератор
Сообщений: 6753
Регистрация: 1.3.2004
Где: Россия, Тамбов

Репутация: 10
Всего: 71



Цитата(baldina @  20.9.2012,  12:11 Найти цитируемый пост)
 но так поступает большинство встроенных функций.

вот в принципе именно с этим и связан мой вопрос


--------------------
Нельзя жить в прошлом, оно уже прошло.
Нельзя жить в будущем, оно ещё не наступило.
Нужно жить в настоящем, помня прошлое и думая о будущем!
PM MAIL WWW ICQ   Вверх
Чучмек
Дата 21.9.2012, 09:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЭТ БИЛЭТ
**


Профиль
Группа: Участник
Сообщений: 841
Регистрация: 11.5.2008
Где: СССР

Репутация: 4
Всего: 41



Цитата(Gold Dragon @  20.9.2012,  10:27 Найти цитируемый пост)
собственно вариантов не так много...

Еще можно -1


Если результат функции не bool, то false




Это сообщение отредактировал(а) Чучмек - 21.9.2012, 09:22


--------------------
умную мысль держи при себе, а дурной - поделись с другими 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0787 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.