先日var_dumpの結果をログに出力したいときに検索すると下記のようなコードを書けばよいということがわかりました。
1 2 3 4 5 6 |
$arr=[1,2,3]; ob_start(); var_dump($arr); $result = ob_get_contents(); ob_end_clean(); //あとはresultをログに吐き出せばOK |
ob_startとかってたまに見るんだけど理屈理解していないのでちょっと調べることに・・・
ob_start、ob_get_contents関数でPHPの標準出力をバッファリング・変数に代入
すげー分かりやすいサンプルが↑にあり、これがそのまま使えるのでのせてしまいます。
簡単に言うと下記のような理解
- ob_startとob_end_cleanの間は出力がされずにバッファという別領域にデータがためられます。録画みたいなイメージ
- ob_get_contentsでバッファ内容がそれまでのバッファ内容をとりこむ。上記だとvar_dump($arr)の部分
- $resultは普通の文字列なのであとはこれをログで普通に吐き出せばOK
PDFエラーの時に、ob_end_cleanを使っていることがあったけど、こういう意味だったんですね・・・
http://skill-up-engineering.com/?p=2473
よく調べるとバッファリングを使ったログ出力は以下のリンクでも自分は書いてましたねー。いやー理解していないから忘却の彼方でした(汗)。
[…] ob_startを使ったバッファリング出力 (参考リンク:http://skill-up-engineering.com/2017/05/23/post-2796/) […]