Хотя ответ на оригинальный вопрос «нет», есть варианты, о которых никто не упомянул.
Когда вы используете знак @, все, что PHP делает, - это перезаписывает уровень error_reporting
и временно устанавливает его на ноль. Вы можете использовать "ini_restore('error_reporting');
", чтобы вернуть его к тому, что было до использования @.
Это было полезно для меня в ситуации, когда я хотел написать вспомогательную функцию для проверки и определения, установлена ли переменная, и имеет ли она также некоторые другие свойства, в противном случае возвращает значение по умолчанию. Но, отправка неустановленной переменной через вызывало уведомление PHP, поэтому я использовал @ для подавления этого, но затем установил error_reporting
обратно к исходному значению внутри функции.
Что-то вроде:
$var = @foo($bar);
function foo($test_var)
{
ini_restore('error_reporting');
if(is_set($test_var) && strlen($test_var))
{
return $test_var;
}
else
{
return -1;
}
}
Итак, в приведенном выше случае, если $bar
не установлено, я не получу сообщение об ошибке при вызове foo()
с несуществующей переменной. Тем не менее, я получу ошибку из функции, в которой я ошибочно набрал is_set
вместо isset
.
Это может быть полезным вариантом, охватывающим то, что первоначальный вопрос задавал по духу, если не на самом деле.