PHP 5.6.0+では、__debugInfo()
マジック関数を使用して の出力をカスタマイズできますvar_dump()
。
array __debugInfo ( void )
このメソッドは、var_dump()
表示されるプロパティを取得するためにオブジェクトをダンプするときに呼び出されます。メソッドがオブジェクトで定義されていない場合、すべての公開、保護、および非公開のプロパティが表示されます。
この機能は PHP 5.6.0 で追加されました。
例:
class MyDateTime{
public $year, $month, $day, $hour, $minute, $second;
public function __debugInfo() {
return array(
'date' => $this->year . "-" . $this->month . "-" . $this->day,
'time' => sprintf("%02d:%02d:%02d", $this->hour, $this->minute, $this->second),
);
}
}
$dt = new MyDateTime();
$dt->year = 2014; $dt->month = 9; $dt->day = 20;
$dt->hour = 16; $dt->minute = 2; $dt->second = 41;
var_dump($dt);
PHP 5.6.0 による出力:
object(MyDateTime)#1 (2) {
["date"]=>
string(9) "2014-9-20"
["time"]=>
string(8) "16:02:41"
}
PHP 5.0.0 - 5.5.16 による出力:
object(MyDateTime)#1 (6) {
["year"]=>
int(2014)
["month"]=>
int(9)
["day"]=>
int(20)
["hour"]=>
int(16)
["minute"]=>
int(2)
["second"]=>
int(41)
}
ノート:
__debugInfo()
を返す必要がありarray
ます。PHP 5.6.0 でstring
次のエラーが発生しました。
致命的なエラー: __debuginfo() は /somepath/somefile.php の 15 行目に配列を返す必要があります
- これは
print_r()
どこにも文書化されていないようですが、それも動作するようです。