You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP7.4环境下CI 3使用短输出标签加载视图抛出异常问题

<?= $this->load->view('test_view.php', []); ?>

问题原因

  • 你使用的是CodeIgniter框架的Loader加载类,view()方法默认第三个参数$return为false,该模式下方法会直接输出渲染后的视图内容,最终返回值是Loader类的实例本身(即报错信息中的MY_Loader对象,用于支持链式调用)。
  • 短输出标签<?=等价于echo,上述代码的实际执行逻辑是:先执行view()方法输出视图内容,再尝试echo方法返回的MY_Loader对象。
  • PHP 7.3及更早版本中,尝试将未实现__toString()方法的对象转为字符串时,仅会抛出E_RECOVERABLE_ERROR级别的可恢复错误。只要你的错误报告配置未开启该级别报错、或者框架错误处理机制静默忽略了该错误,程序就不会中断运行。此时最多只会在日志中留下一条警告,页面输出的视图内容看起来完全正常,会让你误以为代码没有问题。
  • PHP 7.4版本对错误处理做了收紧:默认错误报告级别已包含E_RECOVERABLE_ERROR,同时主流框架的错误处理机制默认会将该级别错误转换为异常抛出,直接中断程序运行,因此就会出现对象无法转换为字符串的报错。

修复方案

如果要保留短输出标签的写法,只需要给view()方法传入第三个参数true,方法会直接返回渲染后的视图字符串而非输出,就不会触发对象转字符串的报错:

<?= $this->load->view('test_view.php', [], true); ?>

内容的提问来源于stack exchange,提问作者Jalil Khan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 17:57:02