[ PHP ] or 演算子 と die 関数を使ったエラー処理の記述方法

Pocket

PHP では、以下のようにエラー時の処理を or 演算子と die 関数 ( exit 関数 )を使って記述することがあります。はじめて PHP を使用する場合にはどのような意味なのか一見するとわかりづらいかもしれません。

スポンサーリンク


or 演算子 と die 関数でエラー処理

$filepath = "/path/to/file";

$fp = @fopen($filepath, 'rb')
        or die('ファイルのオープンに失敗しました');

echo 'ファイルのオープンに成功しました';

fclose($fp);

どういう意味か

上記のサンプルコードは下記に示す if 文と動作原理は同じでです。第1式 ( returnTrue ) が真であるため、第2式 ( returnFalse ) の処理は実行されないということです。つまり fopen 関数が成功して最初の式が真と判定された場合には、die 関数の処理は行われないということを利用した記述方法ということになります。

function returnTrue()
{
    echo 'return true';
    return true;
}

function returnFalse()
{
    echo 'return false';
    return false;
}

if(returnTrue() or returnFalse()) {
    /*
     * 'return true' のみ出力される
     */
}

or 演算子を || 演算子に置き換える

or 演算子を || 演算子に置き換えることもできます。ただし、or 演算子と || 演算子の解釈される優先度の違いに気をつける必要があります。下記のサンプルコードでは、fopen 関数の部分を括弧でくくっています。優先度の違いによって正しく処理が行われないことを回避しています。

$filepath = "/path/to/file";

// 括弧でくくる
($fp = @fopen($filepath, 'rb'))
        || die('ファイルのオープンに失敗しました');

echo 'ファイルのオープンに成功しました';

fclose($fp);
参考
スポンサーリンク

Pocket

Leave a Reply

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

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>