Этот сбил меня с толку некоторое время.
Я пытаюсь вернуть свой $ 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
выдает фатальную ошибку — в строке, где нет кода, и я пока ничего не понимаю.
Я выяснил, в чем проблема.
Приведенный выше код является частью модуля 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.
И несмотря на то, что мой код делал очевидные вещи, была параллельная процедура за кулисами.
И да, мой error_reporting всегда указывал мне на ту же строку рядом с методом моего помощника return $content
код — и это было полностью в заблуждение.
Других решений пока нет …