Объект класса stdClass не может быть преобразован в строку - при возврате объекта из функции - PullRequest
0 голосов
/ 13 мая 2018

Этот сбил меня с толку некоторое время. Я пытаюсь вернуть свой $ content (объект) из своей функции и получаю фатальную ошибку:

Объект класса stdClass не может быть преобразован в строку

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

Работало нормально, но потом мне это дали. Если я уберу возврат ($ content), фатальная ошибка исчезнет.

Следует также отметить, что в отчете об ошибке всегда упоминается одна и та же строка для ошибки, хотя для целей тестирования я немного переместил код. Может ли это быть проблемой с кешем - я не знаю - другие изменения в коде влияют на выполнение скрипта.

В любом случае,

return $content 

приводит к фатальной ошибке - в строке, где нет кода, и я пока ничего не понимаю.

1 Ответ

0 голосов
/ 13 мая 2018

Я выяснил, в чем проблема.

Приведенный выше код является частью модуля 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, - здесь можно найти дополнительную информацию: Загадка с переменной $ content в модулях Joomla.

И несмотря на то, что мой код делал очевидные вещи, была параллельная процедура за кулисами.

И да, мои сообщения об ошибках всегда указывали мне на ту же строку рядом с кодом метода моего помощника return $content - и это полностью вводило в заблуждение.

...