Зачем использовать debugInfo()?
Видел, что PHP 5.6 создал теперь волшебный метод новый, называется __debugInfo
.
Этот метод имеет целью вернуть array
, что будет напечатано в вызове var_dump
. Эта array
возвращается, очевидно, должны предоставлять информацию для отладки класса.
я Хотел бы понять, в каких случаях это было бы полезно?
var_dump
традиционной, само по себе, было не достаточно? Будет, что это было сделано только для решения проблемы циклических ссылок?
1 answers
Когда мы используем var_dump
и без metodo __debugInfo
будут отображаться в выходных данных, включая переменные частные, защищенные, как цитирует документации:
This method is called by
var_dump()
when dumping an object to get the properties that should be shown. If the method isn't defined on an object, then all public, protected and private properties will be shown.
, То __debugInfo
будет использоваться, чтобы ограничить то, что будет отображаться на выходе, пример:
<?php
class Foo
{
private $podeIrParaoLog = 'Olá';
private $naoPodeIrParaoLog = 'Informação sensivel';
public function __debugInfo()
{
return [
'private::podeIrParaoLog' => $this->podeIrParaoLog,
];
}
}
$foo = new Foo();
var_dump($foo);
print_r($foo);
Выход будет что-то вроде:
object(Foo)#1 (1) {
["private::podeIrParaoLog"]=>
string(4) "Olá"
}
Foo Object
(
[private::podeIrParaoLog] => Olá
)