首页 > 解决方案 > 类 stdClass 的对象无法转换为字符串 - 从函数返回对象时

问题描述

这个问题让我困惑了一段时间。我尝试从我的函数返回我的 $content (对象),但出现致命错误:

类 stdClass 的对象无法转换为字符串

if (filter_var($url, FILTER_VALIDATE_URL, FILTER_FLAG_QUERY_REQUIRED))
{
    $content = json_decode($this->_revApiCall($url));
    var_dump( $content);
    return($content);
}

它工作正常,但后来它开始给我这个。如果我删除 return($content) 致命错误就会消失。

另一件需要注意的事情是错误报告总是提到错误的同一行,尽管出于测试目的我已经移动了一些代码。这可能是缓存问题 - 我不知道 - 代码的其他更改正在影响脚本的执行。

无论如何,

return $content 

产生致命错误 - 在没有代码存在的行上,我目前一无所知。

标签: phpjoomlafatal-errorjoomla-module

解决方案


我发现了问题所在。

上面的代码是 Joomla 模块的一部分,位于模块的 helper.php 类中。

到那时为止,一切都很好,并且 $content 是什么(确实是一个对象-我期望在那里的一个对象)并没有什么神秘之处-与它的来源无关。

if (filter_var($url, FILTER_VALIDATE_URL, FILTER_FLAG_QUERY_REQUIRED))
{
    $content = json_decode($this->_revApiCall($url));
    var_dump( $content);
    return($content);
}

然后后来,我调用该函数来获取$content对象,从我的模块内部module.php

我将$content对象分配给名为 $content 的变量,如下所示:

$helper = new ModuleHelper($params);
$content = $helper->returnContentObject();

到目前为止,事情看起来很明显。但这就是问题所在。

还有一个问题 - 因为$content是 Joomla 的模块渲染引擎使用的“神秘”变量 - 可以在此处找到更多信息:Joomla 模块中 $content 变量的奥秘。

尽管我的代码在做显而易见的事情,但在幕后有一个并行的过程。

是的,我的 error_reporting 总是将我指向我的助手方法return $content代码附近的同一行——这完全是误导。


推荐阅读