変数の中身をvar_dumpで出力できない
とあるWordPressのプラグインを触っていて、どうしてもvar_dump関数で値を見れない状態に陥りました。フォームなんですけど、送信した時に画面遷移してしまうというのもあって、その前に$_POSTや$_FILESの情報を見かったから調べてみたらあった。
出力バッファを保存
PHPには、出力制御関数というのがあって、それを使ってファイルへの保存が実現できそう。
以下のようなコードを書きました。
ob_start(); var_dump( '保存したい内容' ); $dump = ob_get_contents(); ob_end_clean(); file_put_contents( ABSPATH . 'wp-content/uploads/logfile.txt', $dump );
- ob_start関数で、出力のバッファリングを有効にします。
- var_dump関数で、保存したい内容(変数を指定して変数の値など)を出力。
- ob_get_contents関数で、出力用バッファの内容を
$dump
変数へ保存。 - ob_end_clean関数で、出力用バッファをクリアするとともに、出力のバッファリングをオフにします。
- 最後にfile_put_contents関数で、指定したパス/ファイル名で保存。(ここでは、WordPressのuploadsディレクトリにlogfile.txtというファイル名で保存しています。)
できた!\(^o^)/
結構、色々なところで使いそう。おかげ様で問題が解決しました。
ファイルへの追記
logfile.txtは上書きされるのですが、追記もできることを知る。(リファレンスに書いてあるのに気づかないっていう)
ob_start(); var_dump( '保存したい内容' ); $dump = ob_get_contents(); ob_end_clean(); file_put_contents( ABSPATH . 'wp-content/uploads/logfile.txt', $dump, FILE_APPEND );
file_put_contents関数の第三引数に「FILE_APPEND」フラグを渡せば追記になるようです。