Получение устаревшей ошибки с Simplepie - PullRequest
3 голосов
/ 04 февраля 2012

Я установил последнюю версию кода Simplepie (1.2.1) и использую предоставляемый ими демонстрационный код:

<?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

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

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

Ответы [ 3 ]

2 голосов
/ 22 марта 2012

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

2 голосов
/ 04 февраля 2012

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

error_reporting(E_ALL & ~E_DEPRECATED);

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

0 голосов
/ 04 марта 2012

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

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

Это было в simplepie.inc

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

...