弊社のシステムに下のようなプログラムがありました。
try {
// ob_startなどは、file_get_contentsだけで処理を完結させるために使用。
ob_start();
$image = file_get_contents($path);
$warning = ob_get_contents();
ob_end_clean();
if (strlen($warning) > 0) {
throw new \Exception($waring);
}
} catch (\Exception $e) {
// エラー処理
}
コメントが何を伝えようとしているのか不明だったため、調べてみました。
PHPではエラーが発生すると、メッセージが画面に表示されます。
ob_start関数は出力のバッファリングを開始する関数で、エラーメッセージもバッファリングされます。
上のプログラムではfile_get_contents関数で発生したエラーのメッセージを一旦バッファリングしたあとで、例外としてthrowしたいようです。
しかし、弊社のシステムではフレームワークとしてLaravelを採用しており、エラーはErrorExceptionとしてthrowされるようになっています。
file_get_contentsでエラーが発生すると、ob_end_cleanが実行されないままcatchブロックが実行されてしまいます。
過去のPHPではある程度有効なパターンだったのかもしれませんが、Laravelには合わないので改修しなければなりません。