1

我最近从我的开发服务器上传了一个 Joomla 2.5 站点到我们的主机,并发现作为我们站点一部分的扩展之一使用的 PHP 代码在 PHP 5.5 中不再“可接受”。我不断得到

警告:从空值创建默认对象 .../helper.php 在第 36 行

由于这只是我遇到的一个错误,我想修复 php 而不是简单地隐藏警告。生成错误的相关代码行是:

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

我知道我应该StdClass;在它尝试访问的变量错误之前添加一个新调用,根据 Mark Tomlin 在这篇文章中的响应如何修复 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;
}

提前感谢您的建议、想法和帮助。

4

1 回答 1

4

在设置属性之前创建对象

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

或单线解决方案

$lists[$i] = (object)array('id' => $row->id);
于 2014-08-08T14:40:40.743 回答