我最近从我的开发服务器上传了一个Joomla 2.5站点到我们的主机,并发现我们站点中的一个扩展使用的PHP代码在PHP 5.5中不再“可接受”。
警告:在第36行从空值... / helper.php创建默认对象
由于我只有一个错误,我想修复php而不是简单地隐藏警告。产生错误的相关代码行是:
$lists[$i]->id = $row->id;
我知道我应该在错误发生之前添加一个新的StdClass;
调用,并在此帖How to fix 'Creating default object from empty value' warning in PHP
然而,作为一个php newb,我不确定下面的代码会是什么样子。
{
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;
}
提前感谢您的建议,想法和帮助。
答案 0 :(得分:4)
在设置属性
之前创建对象$lists[$i] = new stdClass();
$lists[$i]->id = $row->id;
或单线解决方案
$lists[$i] = (object)array('id' => $row->id);