[ PHP ] エラー制御演算子(@) でメッセージの出力を抑える

Pocket

PHP では、エラー制御演算子を使って PHP Notice などのエラーメッセージの出力を制御することができます。

ただし、PHP では、エラーメッセージの出力制御は php.ini や error_reporting 関数などでもエラーを制御するとこもできるので、設定方法や、組み合わせには十分な検証が必要です。

スポンサーリンク

エラー制御演算子の使用サンプル

初期化されていない変数にアクセスした場合には PHP では Notice メッセージが出力されますが、エラー制御演算子を使用して メッセージの出力を抑えるサンプルになります。


/*
 * エラー制御演算子を使用しない場合
 */
$list = array('one' => 1, 'two' => 2);

var_dump($list['one']);   // 1
var_dump($list['two']);   // 2
var_dump($list['three']); // null : Notice: Undefined index: three in ・・・・


/*
 * エラー制御演算子を使用してエラーメッセージを抑制した場合
 */
$list = array('one' => 1, 'two' => 2);

var_dump($list['one']);    // 1
var_dump($list['two']);    // 2
var_dump(@$list['three']); // null

echo $php_errormsg; // Undefined index: three 

エラー制御演算子(@)によって、Notice メッセージの出力が抑制されています。なお、php.ini の track_errors が On の場合は、サンプルのようにグローバル変数 ( $php_errormsg ) からエラーメッセージを取得することができます。

エラー制御演算子を使ったその他のサンプル

ファイルが存在する場合のみ、その内容を読み込みを行う処理で、エラー制御演算子を使用するサンプルになります。

/*
 * エラー制御演算子を使用しない場合
 */
$path = 'path/to/file';
if(is_file($path)) {
    $data = file_get_contents($path);
}

/*
 * エラー制御演算子を使用する場合
 */
$path = 'path/to/file';
$data = @file_get_contents($path);

個人的にはエラー制御演算子は使用しないほうが良いと思います。

参考
スポンサーリンク


Pocket

Leave a Comment

Your email address will not be published. Required fields are marked *