php调试,自定义类__debugInfo与__toString方法有何区别?
发布于 作者:苏南大叔 来源:程序如此灵动~

对php
自定义类的格式化输出,做有益的探讨。本文要探讨的主要内容是:每个php
类都自带的方法__debugInfo()
和__toString()
。主要应用场景是:各种php
代码调试信息输出场景。

苏南大叔的“程序如此灵动博客”,记录苏南大叔的代码感想和感悟。本文测试环境:win10
,nginx@1.15.11
,php@8.2.10-nts
。
__debugInfo()
这个__debugInfo()
是内置的方法,名称不可以改变。否则就无法被自动触发了。定义如下:
__debugInfo()
的返回值必须是个array
,返回字符串是不行的。会得到如下类似报错信息:
触发:
输出:
__toString()
这个__toString()
也是内置的方法,名称不可改变,否则无法被动触发。定义如下:
返回值必须是个string
,否则报错类似:
触发:
输出:
__debugInfo() vs __toString()
__debugInfo()
和__toString()
两个方法做对比的话,区别就主要是使用场景的不同。
__debugInfo()
侧重于debug
,所以可以输出很多细节信息,返回值必须是array
,使用var_dump()
可以触发。__toString()
的debug
的属性则不是那么明显,输出的话则规定了是字符串,可以使用echo
或者print_r()
触发。

方法 | 返回值类型 | 触发方式 |
---|---|---|
__debugInfo() | array | var_dump() / print_r() |
__toString() | string | echo / die() / exit() |
相关文章
- https://newsn.net/say/thinkphp-exception.html
- https://newsn.net/say/thinkphp5-debug.html
- https://newsn.net/say/php-trace-plus.html
- https://newsn.net/say/php-debug-func.html
结束语
其实var_dump()
和echo
都是经常使用的调试手段,但是从细节上探讨的话,居然是调用的不同的对象方法。如果对苏南大叔的php
相关经验文章感兴趣,可以参考:


