Зачем использовать debugInfo()?


Видел, что PHP 5.6 создал теперь волшебный метод новый, называется __debugInfo.

Этот метод имеет целью вернуть array, что будет напечатано в вызове var_dump. Эта array возвращается, очевидно, должны предоставлять информацию для отладки класса.

я Хотел бы понять, в каких случаях это было бы полезно?

var_dump традиционной, само по себе, было не достаточно? Будет, что это было сделано только для решения проблемы циклических ссылок?

Author: Wallace Maxters, 2016-11-17

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á
)
 4
Author: Guilherme Nascimento, 2016-11-22 15:45:10