にゃあ

ob_start()後にthrow new Excpetionすると出力バッファが解除される?

検証1

try
{
	ob_start();
	echo "これは見えちゃだめ!";
	throw new Exception();
}
catch ( Exception $e )
{
}

echo "こっちが先。";

結果1

これは見えちゃだめ!こっちが先。

検証2

try
{
	ob_start();
	echo "これは見えちゃだめ!";
	ob_start();
	echo "これは見えちゃだめだってば!";
	throw new Exception();
}
catch ( Exception $e )
{
}

echo "こっちが先。";

結果2

これは見えちゃだめ!これは見えちゃだめだってば!こっちが先。

検証3

class MyException extends Exception
{
	public function __construct()
	{
		echo "例外のコンストラクタだよ。";
	}
}

try
{
	ob_start();
	echo "これは見えちゃだめ!";
	throw new MyException();
}
catch ( MyException $e )
{
}

echo "こっちが先。";

結果3

これは見えちゃだめ!例外のコンストラクタだよ。こっちが先。

検証4

try
{
	ob_start();
	echo "これは見えちゃだめ!";
	throw new Exception();
}
catch ( Exception $e )
{
	$content = ob_get_clean();
}

echo "こっちが先。";
echo $content;

結果4

こっちが先。これは見えちゃだめ!

まとめ

  • 例外によって出力バッファが解かれるというより、プロセス終了時に開放される模様
  • 例外もキャッチしたときに、ob_get_clean()などを施せば、一応出力バッファを捕獲することはできる。
  • 捕獲はできるけれども、プロジェクトが大規模になってくると捕獲が困難になりそう。何かいい方法ないかな…?

コメント&トラバ

トラックバックを送る

無関係なスパムのトラックバックを防止するため、リンク先で本サイト(suin.asia)への言及が確認されないトラックバックは破棄しています。

トラバURL : http://suin.asia/trackback/505

コメントを書く

お名前* URL
本文*
合い言葉* ←「26akdiotia」と入力して下さい。
* この記事の話題と関係ないコメントはどんな内容でも削除します。(移動できないので)

トラックバック

トラックバックがないのはさみしいにゃん…。

コメント

コメントはないです。誰かコメント書いてよぅ…。

Author

Submenu

Recent Entries

XOOPS Cube Dev Ring

氷川 XOOPS Module 開発室

Recent Comments

Recent Trackbacks