PHP中实例化类后不调用方法直接返回内容的实现方法
解决PHP实例化对象直接输出内容的问题
嘿,这个需求PHP刚好有完美的解决方案——用**__toString()**魔术方法就搞定啦!
当你尝试直接echo一个对象时,PHP默认不知道怎么把它转换成字符串,所以会抛出类似Object of class a could not be converted to string的错误。而__toString()就是专门用来处理这种场景的:只要你的类定义了这个方法,当对象被当作字符串使用(比如echo、print,或者字符串拼接)时,PHP会自动调用它,并把方法返回的字符串作为输出结果。
修改你的代码如下:
class a { public function __construct(){ } public function get(){ return 'hello world'; } // 新增这个魔术方法 public function __toString() { // 你可以直接返回内容,或者调用已有的get方法 return $this->get(); } } echo (new a()); // 现在就能成功输出hello world啦!
小提示:
__toString()方法不能接受任何参数,必须返回一个字符串,否则PHP会抛出致命错误。- 这个方法只在对象被当作字符串上下文使用时触发,比如echo、print,或者把对象赋值给字符串变量的时候。
内容的提问来源于stack exchange,提问作者kennedy
相关产品推荐
相关产品推荐

