2012-02-04 3 views
3

J'ai installé le dernier code simplepie (1.2.1) et je suis en utilisant le code de démonstration qu'ils fournissent:erreur dépréciée avec 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>'; 
} 

?> 

Cependant, quand je charge la page dans mon navigateur, je reçois des dizaines de lignes en disant:

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

Quelqu'un sait ce qui ne va pas? J'ai effectué leur test de compatibilité et montre que tout s'est bien passé.

+1

duplication possible de [Affecter la valeur de retour de nouveau par référence est obsolète] (http://stackoverflow.com/questions/1086539/assigning-the-return-value-of-new-by-reference-is-deprecated – geoffspear

Répondre

2

Ceci est le résultat de la compatibilité PHP 4 de SimplePie et n'est rien dans votre code. Si vous voulez arrêter de voir ces erreurs, exclure E_DEPRECATED de votre error_reporting:

error_reporting(E_ALL & ~E_DEPRECATED); 

Si vous souhaitez corriger les erreurs eux-mêmes, vous pouvez récupérer une copie de SimplePie 1.3-dev (qui laisse tomber la compatibilité PHP 4) de GitHub, mais gardez à l'esprit ceci est une version de développement et est instable.

+0

Ceci est la bonne réponse. Voir aussi [WP base de données de bogues] (http://core.trac.wordpress.org/ticket/12709). Simplepie peut avoir été ajusté entre-temps, mais c'est-à-dire que Compare Revisions n'est toujours pas avec WP 3.4.2 ... il faut donc encore désactiver les avertissements obsolètes. Au moins pour la production. –

+0

WordPress 3.5 inclura SimplePie 1.3.1, qui a tous ces correctifs (car il supprime le support de PHP 4). –

0

La seule occurrence de error_reporting je pouvais trouver dans la version 1.2.1 était cette ligne:

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

Ce fut dans simplepie.inc

Je ne suis toujours pas sûr de savoir comment désactiver tous ces avertissements Je ne suis pas prêt à utiliser la version de développement que je préférerais ne pas avoir car j'ai suffisamment de code pour déboguer tel quel.

2

Vous devez trouver chaque instance de "= & nouveau" dans le code et supprimer le "&" qui est maintenant obsolète. Il y a environ 116 occurrences dans le code. Cela concerne les copies et les références de l'instanciation d'objet.