2012-02-04 1 views
3

Я установил последнюю версию коды SimplePie (1.2.1), и я использую демо-код, который они обеспечивают:Получения устаревшей ошибки с SimplePie

<?php 

require 'simplepie.inc'; 

$url = 'http://news.google.com/news?ned=us&topic=h&output=rss'; 

$feed = new SimplePie(); 
$feed->set_feed_url($url); 
$feed->init(); 

// default starting item 
$start = 0; 

// default number of items to display. 0 = all 
$length = 0; 

// if single item, set start to item number and length to 1 
if(isset($_GET['item'])) 
{ 
    $start = $_GET['item']; 
    $length = 1; 
} 

// set item link to script uri 
$link = $_SERVER['REQUEST_URI']; 

// loop through items 
foreach($feed->get_items($start,$length) as $key=>$item) 
{ 

    // set query string to item number 
    $queryString = '?item=' . $key; 

    // if we're displaying a single item, set item link to itself and set query string to nothing 
    if(isset($_GET['item'])) 
    { 
      $link = $item->get_link(); 
      $queryString = '';   
    } 

    // display item title and date  
    echo '<a href="' . $link . $queryString . '">' . $item->get_title() . '</a>'; 
    echo ' <small>'.$item->get_date().'</small><br>'; 

    // if single item, display content 
    if(isset($_GET['item'])) 
    { 
      echo ' <small>'.$item->get_content().'</small><br>'; 
    } 
    echo '<br>'; 
} 

?> 

Однако, когда я загрузить страницу в браузере, я получаю десятки строк:

Deprecated: Assigning the return value of new by reference is deprecated in /home/pliggs/public_html/rss/simplepie.inc on line 7722 

Кто-нибудь знает, что не так?

Я проверил их тест на совместимость, и он показывает, что все прошло.

+1

Возможный дубликат [Присвоение возвращаемого значения новой по ссылке устарел] (http://stackoverflow.com/questions/1086539/assigning-the-return-value-of-new-by-reference-is-deprecated) – geoffspear

ответ

2

Это результат совместимости с SimplePie с PHP 4 и ничего не содержит в вашем коде. Если вы хотите, чтобы перестать видеть эти ошибки, исключить E_DEPRECATED из вашего error_reporting:

error_reporting(E_ALL & ~E_DEPRECATED); 

Если вы хотите, чтобы исправить ошибки сами, вы можете получить копию SimplePie 1.3-разработчика (который падает PHP 4 совместимость) от GitHub, хотя имейте в виду, что это версия для разработки и неустойчива.

+0

Это правильный ответ. Также см. [База данных ошибок WP] (http://core.trac.wordpress.org/ticket/12709). В то же время Simplepie может быть скорректирована, но, тем не менее, сравнение версий еще не с WP 3.4.2 ... так что все еще нужно отключить устаревшие предупреждения. По крайней мере, для производства. –

+0

WordPress 3.5 будет включать SimplePie 1.3.1, который имеет все эти исправления (поскольку он снижает поддержку PHP 4). –

0

Единственное появление error_reporting я мог бы найти в версии 1.2.1 была эта строка:

if ((ini_get('error_reporting') & $level) > 0) 

Это было в simplepie.inc

Я все еще не уверен, как отключить все эти предупреждения не дойдя до версии dev, которую я бы предпочел не использовать, поскольку у меня достаточно кода для отладки, как есть.

2

Вам необходимо найти все экземпляры "= & новых" в коде и удалить "&", который теперь устарел. В коде содержится около 116 вхождений. Это связано с копиями и ссылками на экземпляр объекта.

 Смежные вопросы

  • Нет связанных вопросов^_^