【问题标题】:Object of class stdClass could not be converted to string - when returning object from function类 stdClass 的对象无法转换为字符串 - 从函数返回对象时
【发布时间】:2018-10-23 04:28:54
【问题描述】:

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

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 

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

【问题讨论】:

  • 你如何处理函数的结果?你在 if 语句之外做什么?你确定错误说它在这个文件中,而不是在另一个文件中(可能是行号没有改变?)。你确定错误不是函数被调用的地方而不是函数本身吗?您需要向我们提供更多信息。我们不知道你的变量包含什么,它们来自哪里,函数是如何被调用的,你对它们做了什么或任何事情,请阅读:How to create a Minimal, Complete, and Verifiable example
  • @MagnusEriksson - 因为您付出了一些努力来撰写评论 - 您可能会对问题所在感兴趣。我在下面发布了答案。

标签: php joomla fatal-error joomla-module


【解决方案1】:

我发现了问题所在。

以上代码是 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);
}

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

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

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

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

还有一个问题 - 因为$content 是 Joomla 的模块渲染引擎使用的“神秘”变量 - 可以在此处找到更多信息:The mystery with the $content variable in Joomla modules.

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

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

【讨论】:

  • 这就是为什么当您提出问题时应该明确并告诉我们有关您系统的所有信息。因为我们甚至不知道您正在使用 Joomla,所以任何人都无法帮助您。
  • @Sbpro 您可能希望给您的答案打上绿色勾号,以便此页面在系统内被视为已解决。 (始终努力为您的所有问题达成系统认可的解决方案)
  • 我知道这是不久前的事了,但是当我使用变量 $template 时遇到了类似的问题 - 应该很明显不使用它,但我花了一个小时才弄清楚。希望这可以节省一些时间!
猜你喜欢
  • 2011-04-06
  • 2018-10-19
  • 2020-03-16
  • 2021-11-10
  • 2014-06-12
  • 1970-01-01
相关资源
最近更新 更多