Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: вопрос

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
namreg
Отправлено: 02 Сентября, 2008 - 15:12:44
Post Id


Новичок


Покинул форум
Сообщений всего: 8
Дата рег-ции: Сент. 2008  


Помог: 0 раз(а)




я конечно ламер, но мне не даёт покоя вопрос: зачем перед некоторыми функциями ставится знак @?? Закатив глазки
 
 Top
Вездеход
Отправлено: 02 Сентября, 2008 - 15:32:50
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 820
Дата рег-ции: Апр. 2008  
Откуда: Россия


Помог: 0 раз(а)




чтобы если появится ошибка при выполнении этой функции - ошибка никак не отобразилась на дальнейшей работе. т.е. не выводилась.


-----
о великий nl2br!
Хочешь невероятных ощущений? Юзай блокнот! Блокнот - чудеса сбываются!
Чем меньше вы знаете PHP - тем ценнее мои знания!
 
 Top
pifon1989
Отправлено: 02 Сентября, 2008 - 15:36:45
Post Id



Частый гость


Покинул форум
Сообщений всего: 196
Дата рег-ции: Май 2008  


Помог: 0 раз(а)




Собака означает, что если функция кривая или там внутри что-то не так, то ошибка выведена не будет, интерпретатор в этом случае просто пропустит её и пойдёт дальше. Но если от неё хоть что-то дальше зависит, я так делать не рекомендую настоятельно. Это будет равносильно тому что вы закроете глазки ладошками, затопаете ногами и начнёте быстро-бытро говоть "нет-нет-нет-нет-нет-нет-нет-нет-нет нету нету нету нету у меня ошибок"
Реально знак вообще рассчитан на тот случай, если например в вашей сборке пхп нет такой функции (она дополнительная, её скачивают и ставят отдельно), то интерпретатор ругаться не будет и страница не будет изуродована сообщением об ашипке. Если же функция есть, то появится какая-нибудь дополнительная красивая фиговинка, которая может даже по сути и не нужна, но так, просто, как бы.
P.S.: ставить можно не только перед функциями, но и перед переменными и массивами.


-----
Ассемблер для Чайников
Всем любителям Pascal посвящается:
function writeln($text) {echo '<br>'.$text};
 
 Top
Champion Супермодератор
Отправлено: 02 Сентября, 2008 - 15:49:11
Post Id



Активный участник


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


Помог: 57 раз(а)




Ко всему выше сказанному. Если, к примеру, разработчик хочет, чтобы в браузер выводилось не стандартое сообщение об ошибке, а свое (написанное далее в обработчике), или вообще без сообщений просто другой ход выполнения программы.
Конечно же, как уже сказали, не надо ставить этот чудо-знак просто, чтоб скрыть ошибку
 
 Top
Вездеход
Отправлено: 02 Сентября, 2008 - 15:50:26
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 820
Дата рег-ции: Апр. 2008  
Откуда: Россия


Помог: 0 раз(а)




не согласен... если есть в скрипте мелкая функция выполнение которой не обязательно но желательно - то удобно использовать собачку...


-----
о великий nl2br!
Хочешь невероятных ощущений? Юзай блокнот! Блокнот - чудеса сбываются!
Чем меньше вы знаете PHP - тем ценнее мои знания!
 
 Top
pifon1989
Отправлено: 02 Сентября, 2008 - 16:00:00
Post Id



Частый гость


Покинул форум
Сообщений всего: 196
Дата рег-ции: Май 2008  


Помог: 0 раз(а)




Вездеход пишет:
не согласен... если есть в скрипте мелкая функция выполнение которой не обязательно но желательно - то удобно использовать собачку...

бгг Радость Радость Радость
pifon1989 пишет:
Если же функция есть, то появится какая-нибудь дополнительная красивая фиговинка, которая может даже по сути и не нужна, но так, просто, как бы.

(Добавление)
P.S.: Сорри если что, но говорим на одном языке и друг друга не слышим Улыбка


-----
Ассемблер для Чайников
Всем любителям Pascal посвящается:
function writeln($text) {echo '<br>'.$text};
 
 Top
Champion Супермодератор
Отправлено: 02 Сентября, 2008 - 16:03:29
Post Id



Активный участник


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


Помог: 57 раз(а)




Вездеход пишет:
не согласен... если есть в скрипте мелкая функция выполнение которой не обязательно но желательно - то удобно использовать собачку...


Не совсем понял. Функция выполнится в любом случае. Она собычку не боится). Собачка только ее вывод съест, чтоб они пользователя не пугали.

А я имел в виду, что например у нас в строке выполняется запрос. С ошибкой. Без собачки будет warning:dynamic sql error..... А можно, скажем, если запрос не выполнился, вывести что-нибудь свое, понятное пользователю. Т.е. свое и так можно вывести, он чтоб перед этим не вывилась стд. ошибка, ее надо скушать собачкой
(Добавление)
а, понял, что ты имеешь в виду)
(Добавление)
pifon1989 пишет:
Всем любителям Pascal посвящается:
function writeln($text) {echo '<br>'.$text};

Классно! Радость
 
 Top
EuGen Администратор
Отправлено: 02 Сентября, 2008 - 17:37:33
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




"@" лишь подавляет весь вывод, генерируемый вызовом функции. К такому выводу относятся и ошибки уровня E_ERROR
Но это не значит, что если произойдет фатальная ошибка, скрипт продолжит свое выполнение.
К примеру,
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. echo("###");
  4. $data=array();
  5. $result=no_function($data);
  6. echo("***");
  7. ?>
  8.  

Выведет
CODE (text):
скопировать код в буфер обмена
  1.  
  2. ###
  3. Fatal error: Call to undefined function no_function()
  4.  

в то время как:
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. echo("###");
  4. $data=array();
  5. $result=@no_function($data);
  6. echo("***");
  7. ?>
  8.  

только

Однако в обоих случаях второе echo не выполнится.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
pifon1989
Отправлено: 02 Сентября, 2008 - 17:40:39
Post Id



Частый гость


Покинул форум
Сообщений всего: 196
Дата рег-ции: Май 2008  


Помог: 0 раз(а)




EuGen пишет:
Однако в обоих случаях второе echo не выполнится.

Спасибо за уточнение. Видимо просто никогда с fatal error в данной ситуации не сталкивался.


-----
Ассемблер для Чайников
Всем любителям Pascal посвящается:
function writeln($text) {echo '<br>'.$text};
 
 Top
namreg
Отправлено: 02 Сентября, 2008 - 23:07:22
Post Id


Новичок


Покинул форум
Сообщений всего: 8
Дата рег-ции: Сент. 2008  


Помог: 0 раз(а)




всем спасибо за столь подробное разъяснение Улыбка
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Напишите за меня, пожалуйста »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB