2011-07-25 33 views
14

Obteniendo estos errores "Obsoleto: Asignar el valor de retorno de nuevo por referencia ha quedado obsoleto ..."¿Qué hace PHP con las funciones obsoletas?

Aunque sé lo que significa la función obsoleta, ¿pero no tengo muy claro qué es lo que PHP les hace? Todavía ejecutarlos como de costumbre? Entonces, en este punto para esta función, ¿PHP asigna silenciosamente la ubicación de la memoria para la variable o aún usa el puntero de referencia?

EDIT - gracias por las respuestas, hice esta pregunta porque estamos usando adodb_lite y la biblioteca no ha corregido el error.

+1

[ADOdb Lite] (http://sourceforge.net/projects/adodblite/) es un software gratuito, por lo que puede participar para ayudarlos a solucionar el problema. Normalmente esto se hace contactando un proyecto a través de su rastreador de errores (una lista en la web para hacer un seguimiento de los problemas) y discutiendo el problema con ellos. Los esfuerzos colectivos vuelven al software. Compartimos el código: compartimos los errores. – hakre

+0

Sí, soy consciente de que es gratis. Comprobé el rastreador de errores, alguien ya planteó el problema hace un tiempo. Parece que nadie (incluso el dueño del proyecto) quiere lidiar con eso. –

Respuesta

16

Las funciones deperecadas aún existen y aparece la advertencia. Entonces funcionan como se esperaba Sin embargo, en una versión futura podrían desaparecer.

Es lo mismo para otras características del lenguaje en desuso que a veces recibe avisos. Es una forma de señalar los cambios a los usuarios que tienen un código basado en una versión anterior de PHP.

Normalmente, las características en desuso se eliminan después de un tiempo, pero no es predecible cuánto tarda. Conozco al menos un caso en el que una característica que ya estaba en desuso no fue desaprobada más adelante. Sin embargo, creo que eso es excepcional.

Si ve estas advertencias, actualice el código. La mayoría de las veces, la documentación de PHP contiene más información sobre por qué algo ha quedado obsoleto y qué hacer. La mayoría de las veces se trata de una mejora (por ejemplo, en seguridad), por lo que deberías tratar estas advertencias si te preocupa el código.

Edit: Creo que es digno de mención en este contexto para buscar strict standards noticesPHP Manual también. Están un tanto relacionados porque estos avisos también son sugerencias útiles para los cambios en el idioma.

Habilitación E_STRICT durante el desarrollo tiene algunos beneficios. Los mensajes STRICT le ayudarán a utilizar el último y mejor método de codificación sugerido, por ejemplo, advertirle sobre el uso de funciones en desuso.

(desde el Manual de PHP enlace anterior)

+2

A partir de PHP 5.3, la advertencia lanzada es 'E_DEPRECATED' o' E_USER_DEPRECATED' - en versiones anteriores, creo que era 'E_NOTICE' –

3

Se procederá a ejecutar como documentado, pero pueden ser eliminado en el futuro y así debe convertirse lo antes posible en el código existente, y no se utiliza en nuevo código.

1

Nada, es solo una advertencia. Léelo como "esta función aún funciona según lo documentado para esta versión de PHP, pero todas las apuestas están desactivadas en versiones futuras". Internamente no hay ninguna diferencia, excepto para agregar las advertencias de depreciación.

3

Las funciones obsoletas funcionan, pero hay mejores alternativas, y pueden eliminarse en versiones futuras de PHP.

1

Todavía se ejecutan como 'normalmente'.

Sin embargo, necesita deshacerse de ellos lo más rápido que pueda para que su código siga funcionando en el futuro.

1

Además de emitir advertencias de desactivación, el código funcionará correctamente. La desactivación indica que la característica en cuestión puede eliminarse en el futuro.

This warning se refiere a una línea como

$obj =& new MyClass(); 

El ampersand no se requiere más desde php 5; simplemente escriba

$obj = new MyClass(); 
3

Creo que PHP continúa ejecutando la función y, además, desencadena un error que indica que la función está en desuso.

Ye Olde Versión:

function foo(){ 
    bar(); 
} 

Nueva Versión:

function foo(){ 
    bar(); 
    trigger_error('Deprecated: this function is deprecated foo!', E_NOTICE); 
} 

Nota: esto es probablemente no lo que es realidad sucediendo detrás de las escenas, pero sería relativamente equivalente .

0

Las funciones depreciadas todavía existen, sin embargo, aparece la advertencia, lo que significa que dichas funciones no estarán disponibles en el futuro.

Cuestiones relacionadas