PHPに慣れる為に週1ぐらいで更新していきます。PHP Manualを読んで実験して行きます。
前回: PHP Manual 読書会(5回目)(演算子#1)
演算子#2
エラー制御演算子
-
エラー制御演算子@
を使用すると発生したエラーメッセージが無視される
通常の場合
<?php
$file = file('hogehgoeoghoehgeheog.txt');
PHP Warning: file(hogehgoeoghoehgeheog.txt): failed to open stream: No such file or directory
エラー制御演算子をつけた場合
<?php
$file = @file('hogehgoeoghoehgeheog.txt');
なにもでない。
set_error_handler() で自作のエラーハンドラを設定した場合は エラー制御演算子があってもそのエラーハンドラがコールされます。
と書かれているので、set_error_handler
をつけると
<?php
function myHoge($errno, $errstr, $errfile, $errline)
{
print_r(array($errno,$errstr,$errfile,$errline));
return;
}
set_error_handler("myHoge");
echo 1/0;
Array
(
[0] => 2
[1] => Division by zero
[2] => /home/xxxxxxxxx/git/php_sample/operators/set_error.php
[3] => 11
)
INF
このようにhookをかけられます。また、エラー制御演算子が存在していてもこの登録関数は呼び出されます。