「ob_start」内という呼び方は正しくないかも知れませんが
以下「ここのコード」内で途中で処理を抜け出したい場合
どうすれば良いのでしょうか
ob_start(); ~「ここのコード」~ $return_data = ob_get_clean();
例えばexit()を使うと
ob_start(); echo 'aaa'; $error = 1; if($error) exit('end'); echo 'bbb'; $return_data = ob_get_clean();
期待する結果は
$return_data に 'aaaend'が格納される形ですが
実際にはob_get_cleanまで到達せずに
'aaaend'が「標準出力」されてしまいます
return falseを使うと
ob_start(); echo 'aaa'; $error = 1; if($error) return false; echo 'bbb'; $return_data = ob_get_clean();
$return_data に 'aaaend'が格納されますが
return が深い階層にある場合は無効になってしまいます
$error をifで囲みそれ以降の処理をさせないようなソースにすると
$errorの条件が沢山ある場合はネストされまくって可読性が低くなるので
可能であればエラーが出たらそれ以降のソースを飛ばして「$return_data = ob_get_clean();」まで持っていけるような
魔法の一文を求めております
お忙しい中恐縮ですが
分かる方ご教授くださいませ
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/07/27 12:08