是否可以在PHP中覆盖printIr对ArrayIterator对象的行为?

Dav*_*lis 3 php arrays

我有一个扩展ArrayIterator的PHP类,并且已经实现了所有必要的方法,因此它的行为就像一个数组.

这适用于foreach循环之类的东西,但调用print_r它仍然会打印出对象的变量,而不是像数组一样打印它.

是否有某种方法可以覆盖此行为,以便调用print_r(我猜var_dump)将为此对象打印自定义输出?

Fel*_*ing 6

不,因为它旨在提供有关变量的信息(即它用于调试),而不仅仅是给它一些字符串表示.

您可以覆盖__toString并使用echo.


Rad*_*472 6

从 PHP 5.6 开始,添加了 magic 方法__debuginfo,如果你实现它,你应该能够覆盖var_dumpprint_r行为。

参见这里: http: //php.net/manual/language.oop5.magic.php#object.debuginfo