![]() |
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]() ![]() ![]() |
|
chori |
|
|||
Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 1.6.2007 Репутация: нет Всего: нет |
Здрасте!
Что значит и как использовать @? Это что то вроде переменной или функции?? |
|||
|
||||
sTa1kEr |
|
||||
9/10 программиста ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1553 Регистрация: 21.2.2007 Репутация: 56 Всего: 146 |
Оператор управления ошибками
|
||||
|
|||||
Mal Hack |
|
|||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 122 Всего: 261 |
Перевожу на русский язык. ИСпользуем @ только там, где НАДО подавить ошибку, в условии, когда идет на нее проверка.
|
|||
|
||||
SelenIT |
|
|||
![]() баг форума ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3996 Регистрация: 17.10.2006 Где: Pale Blue Dot Репутация: 32 Всего: 401 |
Очень хорошая статья по теме на phpclub-е.
-------------------- Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму! |
|||
|
||||
sTa1kEr |
|
|||
9/10 программиста ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1553 Регистрация: 21.2.2007 Репутация: 56 Всего: 146 |
Хотел добавить, что еще следует всегда руководствоваться следующим правилом: Там где Notice или Warning можно предотвратить дополнительным условием или другой поверкой, нужно использовать именно эту проверку, а не подавлять вывод ошибок. Но существуют исключения:
1. Бывают ситуации, когда Warning - это штатная ситуация, избежать которой невозможно, кроме как использование оператора @. К примеру такое может быть при использовании функции stream_select(), которая всегда выдает Warning и возвращает false, если один из stream-ов вернул ошибку. 2. Где любой вывод посторонних данных критичен. Например при генерации xml, json, eval кода итп. Хотя даже в этом случае следует обрабатывать предупреждения, к примеру, писать в лог или в комментарий используя $php_errormsg. |
|||
|
||||
GZep |
|
|||
![]() участник Винграда ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1528 Регистрация: 7.7.2006 Где: Москва Репутация: 8 Всего: 32 |
бывают случаи, когда @ не припятствует выводу ошибки.
-------------------- ![]() ![]() |
|||
|
||||
sTa1kEr |
|
|||
9/10 программиста ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1553 Регистрация: 21.2.2007 Репутация: 56 Всего: 146 |
||||
|
||||
SelenIT |
|
|||
![]() баг форума ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3996 Регистрация: 17.10.2006 Где: Pale Blue Dot Репутация: 32 Всего: 401 |
Имхо, в production-окружении вообще всегда должен стоять display_errors=off, а все ошибки (включая нотайсы, по-хорошему) должны писаться именно в лог. Потому что, кроме порчи дизайна, сообщения об ошибках могут "проболтаться" хакеру о многом ненужном... ;) Это сообщение отредактировал(а) SelenIT - 25.7.2007, 02:43 -------------------- Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму! |
|||
|
||||
sTa1kEr |
|
|||
9/10 программиста ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1553 Регистрация: 21.2.2007 Репутация: 56 Всего: 146 |
SelenIT, совершенно с вами согласен. Толко "@" подавляет вывод ошибок не только на экран, но вообще в принципе (даже критических), втч и в лог.
display_errors=off на рабочей системе - это как библия, первооснова. Добавлено через 5 минут и 3 секунды По поводу второго пункта. Так же, имхо, ни что не должно влиять на результат работы скрипта, будь то рабочая система или локальная. Т.е. пока есть хотя бы один нотис - скрипт не рабочий, я считаю, что таким правилом должен руководствоваться любой программист на PHP. |
|||
|
||||
GZep |
|
|||
![]() участник Винграда ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1528 Регистрация: 7.7.2006 Где: Москва Репутация: 8 Всего: 32 |
http://forum.vingrad.ru/index.php?showtopi...t&p=1122148 -------------------- ![]() ![]() |
|||
|
||||
smartov |
|
|||
![]() свой собственный ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4225 Регистрация: 2.2.2006 Где: NJ Репутация: 7 Всего: 259 |
GZep, в этой теме обсуждаются не извращения а знак @
А если человек переопределяет функцию обработки ошибки - он знает что делает или сам виноват Кстати, сли подойти к процессу с точки зрения PHP то @ не "подавляет" ошибку магическим способом, просто на время выполнения следующей команды режим вывода ошибок переводится в E_NONE |
|||
|
||||
Fally |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 265 Регистрация: 17.8.2006 Где: Dahla Репутация: 3 Всего: 4 |
По-моему, начиная с РНР5, использование оператора @ вообще неразумно, т.к. любую ошибку (кроме Fatal и Parsing) можно обработать при помощи механизма исключений. Да и вообще использование @ для меня сильно ухудшает восприятие кода, т.к. создаётся впечатление о том, что программист наспех закрывал все нотайсы и варнинги не пытаясь устранить причину их появления.
+1 |
|||
|
||||
smartov |
|
||||||
![]() свой собственный ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4225 Регистрация: 2.2.2006 Где: NJ Репутация: 7 Всего: 259 |
А я часто проверяю параметры вот так
Чтобы не изгаляться длинными и ненужными
|
||||||
|
|||||||
Fally |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 265 Регистрация: 17.8.2006 Где: Dahla Репутация: 3 Всего: 4 |
А не проще ли так:
? Ну и опять же забыл написать, что это было ИМХО, просто символ собачки мне не очень нравиться использовать кроме для email адресов. |
|||
|
||||
WolfON |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 604 Регистрация: 19.7.2004 Репутация: 6 Всего: 8 |
smartov, empty проверяет и на то, существует переменная или нет, по этому достаточно:
Собачка - признак плохого стиля - необдуманное ее использование может быть причиной трудноуловимых ошибок. Это сообщение отредактировал(а) WolfON - 25.7.2007, 15:00 |
|||
|
||||
![]() ![]() ![]() |
Правила форума "PHP" | |
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |