Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

isset или а не уго в топку?

714
16 февраля 2012 года
clgs
226 / / 29.10.2008
Добрый день.
Давным давно читал что рабочий код должен быть без нотисов (предупреждения).
Сегодня, после двух часовой дискуссии (я не участвовал), мне сказали что писать isset это глупость, а именно в таком случае:
 
Код:
$qwe=$_GET['qwe'];

Аргументированно это тем что это быстрее работает чем:
 
Код:
$qwe=isset($_GET['qwe'])?$_GET['qwe']:null;

Собственно вопрос: Насколько это быстрее и правильнее? Если переменная есть, то да быстрее, а если нет, вернет null (аналогично примеру ниже), но будет нотис и этот нотис захочет записаться в файл - и получается что будет работать медленнее. Или я что-то не понимаю?
714
16 февраля 2012 года
clgs
226 / / 29.10.2008
Ох, не хватает язвительного ответа RussianSpy =(
244
16 февраля 2012 года
UAS
2.0K / / 19.07.2006
А нахера такой говнокод?
Вообще используйте данные сразу из массива. Зачем их дублировать?

И, кстати,
$arr['ololo'] = null;
isset($arr['ololo']); // === false
714
16 февраля 2012 года
clgs
226 / / 29.10.2008
Вот это интереснее, а если так:
 
Код:
$qwe=empty($_GET['qwe'])?'пусто':$_GET['qwe'];

И гавно код тут не причем, вопрос про isset.

Про null я знаю)
271
17 февраля 2012 года
MrXaK
721 / / 31.12.2002
http://ru.php.net/manual/en/function.isset.php

isset - это не функция, а конструкция языка, просто для удобства вызывается всё равно со скобками.. если ваши коллеги утверждают, что второй вариант выполняется медленнее, пусть приведут доказывающие это тесты.. empty тоже конструкция языка (http://ru.php.net/manual/en/function.empty.php), но empty() не полный эквивалент isset().

тов. UAS, а что вас смущает в таком поведении? в мануале чётко написано, значение ключа установлено в NULL - значит ключ считается незаданным, юзайте array_key_exists(), что вполне логично на мой взгляд

з.ы. http://www.phpbench.com/ четвёртый тест, и ещё приписочка внизу полезной может оказаться
з.з.ы. а вообще можете забить на isset() и писать как говорят товарищи, но только в одном единственном случае: если вы точно знаете, что данная переменная будет.. ну например это у вас какой-нибудь внутренний вызов api-функции внутреннего движка, почему-то по http и вы гарантированно имеете что-то в запросе.
714
17 февраля 2012 года
clgs
226 / / 29.10.2008
С GET и POST гарантий наличия не может быть.
714
17 февраля 2012 года
clgs
226 / / 29.10.2008
http://phpbench.com/ -
Цитата:
Internal Server Error

CageFS jail error Failed to initialize lve library instance: No such file or directory
suPHP 0.7.1

271
17 февраля 2012 года
MrXaK
721 / / 31.12.2002
Цитата: clgs
http://phpbench.com/ -
Цитата:
Internal Server Error

CageFS jail error Failed to initialize lve library instance: No such file or directory
suPHP 0.7.1


видать упал сервак у них)) в-общем, там был бенч isset vs empty vs in_array(), а приписку снизу по памяти не воспроизведу.. откройте его через пару дней, авось восстановят

гарантии быть могут, если это оба ваших приложения и внутренее исключает приём данных от пользователя непосредственно, только от своего внешнего) только если _GET/_POST вообще не передадутся в виду бага сервера, но это уже другой вопрос.. ну или кривой программист, неожиданно поменявший внутренний протокол доступа)

714
17 февраля 2012 года
clgs
226 / / 29.10.2008
Цитата: MrXaK

гарантии быть могут, если это оба ваших приложения и внутренее исключает приём данных от пользователя непосредственно, только от своего внешнего)


так тут идет вопрос именно при приёмки данных от пользователя.

12
20 февраля 2012 года
alekciy
3.0K / / 13.12.2005
empty vs isset это не то бутылочное горлышко в которые происходит упор при разработке веб приложения. А вот возможность конструкций вида:
 
Код:
if ( empty($_GET['var']) ) { ...

или проверка массива на пустоту очень даже влияют на читабельность кода и процесс разработки.

Но в итоге каждый волен поступать как хочет и придерживаться удобного для него code style. А коллеги... недалекие люди потратившие два часа времени на полную х***ю. Вдвойне х***ю если за счет рабочего времени.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог