変数の中身を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 );
  1. ob_start関数で、出力のバッファリングを有効にします。
  2. var_dump関数で、保存したい内容(変数を指定して変数の値など)を出力。
  3. ob_get_contents関数で、出力用バッファの内容を$dump変数へ保存。
  4. ob_end_clean関数で、出力用バッファをクリアするとともに、出力のバッファリングをオフにします。
  5. 最後に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」フラグを渡せば追記になるようです。