Forum Webscript.Ru
Программирование => PHP => Тема начата: Nikman от 18 Июня 2003, 18:22:58
-
Зачем перед некоторыми функциями ставят @ ???
Что от этого меняеться?
Например
include(PATH);
@include(PATH);
в чём тут разница?
-
читай мануал
а вообще так подавляется вывод варнингов.
-
Это ужасный, очень вредный и опасный оператор.
подавляет он вывод не варнингов, а любых сообщений об ошибках.
перед инклюде - это просто глобальная засада, которую программист сам себе устраивает.
@ используют только дураки, которые не понимают, что они делают.
сообщения об ошибках - это манна небесная, это единственное, что помогает программисту. Без них он как без зрения, слуха и обоняния.
сообщения об ошибках надо не подавлять, а наоборот - с каждой разбираться, и исправлять программу!
@ ставят в том случае, если не хотят, чтобы пользователь видел сообщение об ошибке.
но для этого есть гораздо более эффективные способы.
1. такой же неправильный, как и сама собака, но более удобный.
Вместо того, чтобы ставить перед каждой функцией собаку (а потом убирать, если что-то не работает), можно написать сразу в начале скрипта
error_reporting(0);
но правильнее, написать так
ini_set(\'display_errors\',0);
ini_set(\'log_errors\',1);
тогда пользователь ошибок не увидит, а программист - в логах - увидит!
-
Да вот в этом и фигня что в мануале чё то этого нет :(
-
Лучше тебе воздержаться от таких высказываний.
В мануале это ЕСТЬ, и ты это прекрасно понимаешь.
Наяти трудно, если не знаешь, про что оно - да.
но не надо так заявлять. проблема-то не в мануале ведь
-
Спасибо за тему! Я сижу, кайфую, думаю в кой-то веке без очепяток код стал писать, а у меня в пхп.ини вывод варнингов был отключен.. :(
Хотя в принцепе не такая уж это и плохая собака, в некоторых некритичных местах я её юзаю, например при проверке переменных полученных из формы, когда надо узнать заполнено то или иное поле, не важно чем, как альтернатива
if(!empty($_POST[\'var\'])) проще записать как if(@$_POST[\'var\']), особенно когда переменных много..
-
Когда переменных много, их надо обрабатывать массивом.
В цикле.
-
Вот когда я делаю какой-нить сайт на локальной машине, я перед всеми функциями mail ставлю @ т.к. stmp сервера нету %)
-
Напиши в 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 F ("-" x max(75,length($cmd)))."\\n";
my $len = 0;
my $sn;
while(defined($s=)) {
last if $s=~/^\\.[\\r\\n]*$/s;
print F $s;
$sn = $s=~/\\n/s;
$len = length($s) if length($s)>$len;
}
print F "\\n" if !$sn;
print F ("=" x max(75,$len))."\\n\\n";
close(F);
sub max
{ my ($a,$b) = @_;
return $a>$b? $a : $b;
}
Очень круто помогает!