While the answer to the original question is "no", there is an options no one has mentioned.
When you use the @ sign, all PHP is doing is overriding the error_reporting
level and temporarily setting it to zero. You can use "ini_restore('error_reporting');
" to set it back to whatever it was before the @ was used.
This was useful to me in the situation where I wanted to write a convenience function to check and see if a variable was set, and had some other properties as well, otherwise, return a default value. But, sending an unset variable through caused a PHP notice, so I used the @ to suppress that, but then set error_reporting
back to the original value inside the function.
Something like:
$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;
}
}
So, in the case above, if $bar
is not set, I won't get an error when I call foo()
with a non-existent variable. However, I will get an error from within the function where I mistakenly typed is_set
instead of isset
.
This could be a useful option covering what the original question was asking in spirit, if not in actual fact.