tag name php php-5.2

php - name - La asignación del valor de retorno de nuevo por referencia está obsoleta



get tag name wordpress (10)

Acabo de recibir un error.

Cuando trato de asignar un objeto como este:

$obj_md = new MDB2();

El error que obtengo es "Asignar el valor de retorno de nuevo por referencia está en desuso". De hecho, he estado buscando una solución, pero la única que he visto es rechazar la política de php.ini (error_reporting). Lo intenté también, pero no funcionó.

Es muy confuso ... Espero que puedas ayudarme. Gracias por adelantado.


& se usa en PHP para pasar un objeto a un método / asignar un nuevo objeto a una variable por referencia. Está en desuso en PHP 5 porque PHP 5 pasa todas las variables por referencia de forma predeterminada.



En PHP5 este idioma está en desuso

$obj_md =& new MDB2();

¿Seguro que no te has perdido un ampersand en tu código de muestra? Eso generaría la advertencia que usted indica, pero no es necesario y puede eliminarse.

Para ver por qué se utilizó este modismo en PHP4, consulte esta página del manual .


Nitin tiene razón: el problema está en el código MDB2.

Según Replacement for PEAR: MDB2 en PHP 5.3 , puede actualizar a la versión SVN de MDB2 para una versión que sea compatible con PHP5.3.

Como esa respuesta se dio en marzo de 2010, y http://pear.php.net/package/MDB2/ muestra un lanzamiento algunos meses después, espero que la versión actual de MDB2 también solucione el problema.


Quizás el constructor de MDB2 tiene algún código que usa $ variable = & new ClassName ();


Recientemente moví un sitio usando SimplePie ( http://simplepie.org/ ) de un servidor que estaba usando PHP 5.2.17 a uno que está usando PHP 5.3.2. Fue después de este movimiento que comencé a recibir una lista de mensajes de error como este:

Obsoleto: la asignación del valor de retorno de nuevo por referencia está obsoleta en ... / php / simplepie.inc en la línea 738

Después de revisar varias discusiones sobre este tema, lo solucioné reemplazando todas las instancias de = & new con = new en el archivo simplepie.inc.

No tengo experiencia suficiente para saber si esto funcionará en todas las instancias en que se reciben estos mensajes de error, pero funcionó en este caso particular y puede valer la pena intentarlo.


Sucedió debido a PHP 5.3, que viene en el paquete WAMP 2.0i y no en Joomla.

Tienes dos opciones para arreglarlo,

use WAMP 2h (versión anterior) o descargue el complemento PHP 5.2.9-2 del sitio web de WAMP.


Yo tuve el mismo problema. Ya tenía el ''&'' y todavía estaba dando la misma advertencia. Estoy usando PHP 5.3 con WAMP y todo lo que hice fue QUITAR el signo ''&'' y la advertencia desapareció.

$obj= new stdClass(); //Without ''&'' sign.


simplemente elimine lo new en $obj_md =& new MDB2();


C:/wamp/www/../libraries/pattemplate 1.ini_set(''display_errors'', 0); $this->_modules[$moduleType][$sig] =&new $moduleClass; wrong $this->_modules[$moduleType][$sig] =new $moduleClass; Right