Автор Тема: Зачем перед некоторыми функциями ставят @ ???  (Прочитано 3432 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Nikman

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 77
  • +0/-0
  • 0
    • Просмотр профиля
Зачем перед некоторыми функциями ставят @ ???
Что от этого меняеться?

Например

include(PATH);
@include(PATH);

в чём тут разница?

Оффлайн Xander

  • санитар леса
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1780
  • +0/-0
  • 2
    • Просмотр профиля
читай мануал
а вообще так подавляется вывод варнингов.
•••Jah\'d never let us down!•••

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Это ужасный, очень вредный и опасный оператор.
подавляет он вывод не варнингов, а любых сообщений об ошибках.
перед инклюде - это просто глобальная засада, которую программист сам себе устраивает.

@ используют только дураки, которые не понимают, что они делают.

сообщения об ошибках - это манна небесная, это единственное, что помогает программисту. Без них он как без зрения, слуха и обоняния.
сообщения об ошибках надо не подавлять, а наоборот - с каждой разбираться, и исправлять программу!

@ ставят в том случае, если не хотят, чтобы пользователь видел сообщение об ошибке.
но для этого есть гораздо более эффективные способы.
1. такой же неправильный, как и сама собака, но более удобный.
Вместо того, чтобы ставить перед каждой функцией собаку (а потом убирать, если что-то не работает), можно написать сразу в начале скрипта
error_reporting(0);

но правильнее, написать так
ini_set(\'display_errors\',0);
ini_set(\'log_errors\',1);

тогда пользователь ошибок не увидит, а программист - в логах - увидит!

Оффлайн Nikman

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 77
  • +0/-0
  • 0
    • Просмотр профиля
Да вот в этом и фигня что в мануале чё то этого нет :(

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Лучше тебе воздержаться от таких высказываний.
В мануале это ЕСТЬ, и ты это прекрасно понимаешь.
Наяти трудно, если не знаешь, про что оно - да.
но не надо так заявлять. проблема-то не в мануале ведь

Оффлайн Neter

  • Жустер
  • Старожил
  • ****
  • Сообщений: 324
  • +0/-0
  • 2
    • Просмотр профиля
Спасибо за тему! Я сижу, кайфую, думаю в кой-то веке без очепяток код стал писать, а у меня в пхп.ини вывод варнингов был отключен.. :(

Хотя в принцепе не такая уж это и плохая собака, в некоторых некритичных местах я её юзаю, например при проверке переменных полученных из формы, когда надо узнать заполнено то или иное поле, не важно чем, как альтернатива
if(!empty($_POST[\'var\'])) проще записать как if(@$_POST[\'var\']), особенно когда переменных много..
Мне тормоз послужил толчком...

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Когда переменных много, их надо обрабатывать массивом.
В цикле.

Оффлайн AlieN

  • Абыр!=)
  • Ветеран
  • *****
  • Сообщений: 1315
  • +0/-1
  • 2
    • Просмотр профиля
Вот когда я делаю какой-нить сайт на локальной машине, я перед всеми функциями mail ставлю @ т.к. stmp сервера нету %)
The Chemical Brothers - Hey Boy Hey Girl (User Friendly Mix)
Peter Presta pres - Set Sail(Peter Presta Apple Jaxx Dub) She S.Sunshine Feat Mila - Bring The Beat Back (Club Mix) Jerry Ropero - Home Alone (Dub Mix)

Оффлайн Alexandr

  • Фанат форума
  • Ветеран
  • *****
  • Сообщений: 865
  • +0/-0
  • 0
    • Просмотр профиля
    • http://gtp.hobi.ru
Напиши в php.ini
sendmail_path = c:\\path\\perl.exe c:\\path\\sendmail.pl

sendmail.pl
#!/usr/bin/perl -w

## Path to result file.
## You may edit it if you want.

my $out "c:/path/tmp/!sendmail.txt";


open(local *F">>$out") or die "Couldn\'t open \\"$out\\"\\n";
my $cmd "[".localtime()."] sendmail ".join(" ",@ARGV);
print 
F $cmd."\\n";
print 
("-" x max(75,length($cmd)))."\\n";

my $len 0;
my $sn;
while(
defined($s=<STDIN>)) { 
	
last if $s=~/^\\.[\\r\\n]*$/s;
	
print 
F $s;
	
$sn $s=~/\\n/s;
	
$len length($s) if length($s)>$len;
}
print 
"\\n" if !$sn;
print 
("=" x max(75,$len))."\\n\\n";

close(F);

sub max
{
	
my ($a,$b) = @_;
	
return 
$a>$b$a $b;
}


Очень круто помогает!
Kiss my CSS
Pусские gtp gp3 ( midi + tab ) -   - Все для Авто.

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28