САМОУЧИТЕЛЬ PHP 4




Оператор отключения ошибок


Есть и еще один аргумент за то, чтобы всегда использовать полный контроль ошибок. Это— существование в 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(), если его и так можно локально установить при помощи @? По-моему, нет.




Содержание  Назад  Вперед