Есть и еще один аргумент за то, чтобы всегда использовать полный контроль ошибок. Это— существование в PHP оператора @. Если этот оператор поставить перед любым выражением, то все ошибки, которые там возникнут, будут проигнорированы. Например:
if(!@filemtime("notextst.txt"))
echo "Файла не существует!";
Попробуйте убрать оператор @ — тут же получите сообщение: "Файл не найден", а только после этого — вывод оператора echo. Однако с оператором @ предупреждение будет подавлено, что нам и требовалось.
Кстати, в приведенном примере, возможно, несколько логичнее было бы воспользоваться функцией file_exists(), которая как раз и предназначена для определения факта существования файла, но в некоторых ситуациях это нам не подойдет. Например:
// Îáíîâèòü ôàéë, åñëè åãî íå ñóùåñòâóåò èëè îí î÷åíü ñòàðûé
if(!file_exists($fname) || filemtime($fname)<time()-60*60)
MyFunctionForUpdateFile($fname);
Сравните со следующим фрагментом:
// Îáíîâèòü ôàéë, åñëè åãî íå ñóùåñòâóåò èëè îí î÷åíü ñòàðûé
if(@filemtime($fname)<time()-60*60)
MyFunctionForUpdateFile($fname);
Всегда помните об операторе @. Он крайне удобен. Подумайте, стоит ли рисковать, устанавливая слабый контроль ошибок при помощи Error_reporting(), если его и так можно локально установить при помощи @? По-моему, нет.