ネタが無いので若干放置気味にしてたら
nanasiさんより古い記事にコメント頂きました。
ちなみに古い記事では、echoやvar_dumpで出力した値を一旦バッファに溜めて変数へ保存し、その内容をファイルに保存してました。
それ1行でできるよ!との事。
早速ご提供いただいた方法を試してみることに
--ソース--
class test_class {
public $pubic_bool = true;
private $private_static_val = 'private val';
public $public_static_val = 'public val';
private $private_val = array('a','b','c','d');
public $public_val = array(1,2,3,4);
}
$val = new test_class();
$filename = '/tmp/kawaguchi_test_data';
//nanasiさんよりご提供の方法
file_put_contents($filename,var_export($val,true),FILE_APPEND);
//以前記事で扱った方法
ob_start();
var_dump($val);
$out=ob_get_contents();
ob_end_clean();
file_put_contents($filename,$out,FILE_APPEND);
--出力されたファイル--
test_class::__set_state(array(
'pubic_bool' => true,
'private_static_val' => 'private val',
'public_static_val' => 'public val',
'private_val' =>
array (
0 => 'a',
1 => 'b',
2 => 'c',
3 => 'd',
),
'public_val' =>
array (
0 => 1,
1 => 2,
2 => 3,
3 => 4,
),
))
object(test_class)#1 (5) {
["pubic_bool"]=>
bool(true)
["private_static_val:private"]=>
string(11) "private val"
["public_static_val"]=>
string(10) "public val"
["private_val:private"]=>
array(4) {
[0]=>
string(1) "a"
[1]=>
string(1) "b"
[2]=>
string(1) "c"
[3]=>
string(1) "d"
}
["public_val"]=>
array(4) {
[0]=>
int(1)
[1]=>
int(2)
[2]=>
int(3)
[3]=>
int(4)
}
}
以前のやり方だと、バッファの開始と終了を明示的に宣言していましたが、var_exportは内部でやってくれてるみたいでコードがスッキリしそうです。
一番の違いはvar_exportの返り値は「表現が有効なPHPコード」というところでしょうか。
マニュアルにいくつかこういう使い方あるよんってサンプル載ってました。
まあ詳しいことはマニュアル参照して下さい。
デバッグとして型などを知りたい場合は以前書いた方法でvar_dumpの出力を得たりでいいと思います。
場面によって使い分けって事ですね。
コメントを下さったnanasiさんありがとうございました。
大変参考になりました。