Исправление предупреждения «Создание объекта по умолчанию из пустого значения» в PHP

Недавно я загрузил сайт Joomla 2.5 с моего сервера разработки на наш хост и обнаружил, что одно из расширений, являющихся частью нашего сайта, использует код PHP, который больше не является «приемлемым» в PHP 5.5. я продолжаю получать

Внимание! Создание объекта по умолчанию из пустого значения .../helper.php в строке 36

Поскольку я получаю только одну ошибку, я хотел бы исправить php, а не просто скрывать предупреждение. Соответствующая строка кода, генерирующая ошибку:

$lists[$i]->id = $row->id;

Я знаю, что мне следует добавить новый вызов StdClass; прямо перед ошибкой с переменной, к которой он пытается получить доступ, согласно ответу Марка Томлина в этом сообщении Как исправить предупреждение «Создание объекта по умолчанию из пустого значения» в PHP

Однако, будучи новичком в php, я не уверен, как это будет выглядеть в приведенном ниже коде.

{
public static function getList($params)
{

    $items = modArticlesLatestHelper::getList($params);

    $text_length = intval($params->get( 'preview_count', 200) );
    $tags       = $params->get('strip_tags', "a,i,br");

    $i=0;
    $lists  = array();
    foreach ( $items as $row )
    {
        //process content plugins
        $text = JHTML::_('content.prepare',$row->introtext);
        $lists[$i]->id = $row->id;
        $lists[$i]->thumb = self::getThumb($row->introtext,$params->get('thumb_width',160));
        $lists[$i]->created = $row->created;
        $lists[$i]->modified = $row->modified;
        $lists[$i]->link = $row->link;
        $lists[$i]->title = htmlspecialchars( $row->title );
        $lists[$i]->introtext = self::prepareContent( $text, $text_length, $tags);
        $i++;
    }

    return $lists;
}

Заранее спасибо за ваши предложения, идеи и помощь.


person mmt    schedule 08.08.2014    source источник
comment
святая мольба, я скучаю (не) по коду joomla.   -  person Populus    schedule 08.08.2014
comment
Я должен был не публиковать так много кода?   -  person mmt    schedule 08.08.2014
comment
нет, это хорошо, просто мне никогда не нравился код joomla, и похоже, что он не сильно улучшился за столько лет. вы также должны отключить display_errors на производстве   -  person Populus    schedule 08.08.2014


Ответы (1)


Создайте объект перед установкой свойства

$lists[$i] = new stdClass();
$lists[$i]->id = $row->id;

Или однолинейное решение

$lists[$i] = (object)array('id' => $row->id);
person insanebits    schedule 08.08.2014
comment
Спасибо, примерно через 30 секунд после публикации я попробовал этот подход, и он сработал. Чувак, я чувствую себя довольно глупо из-за того, что не узнал / не попробовал это перед публикацией. Спасибо за быстрое и точное исправление. - person mmt; 08.08.2014