Ответ 1
В 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()
, хотя это нигде не документировано.