2010-11-05 23 views
5

Tengo muchas ganas de actualizar varios de nuestros servidores a PHP 5.3. Esto estaría preparado para Zend Framework 2 y también para las aparentes actualizaciones de rendimiento. Lamentablemente, tengo grandes cantidades de código heredado en estos servidores, que a su debido tiempo serán corregidos, pero no pueden repararse antes de la migración. Estoy considerando actualizar pero deshabilitar el error de la función en desuso en todos los sitios de desarrollo, excepto en algunos, donde puedo empezar a trabajar actualizando el código anterior.Actualización a PHP 5.3 con funciones en desuso advertencia deshabilitada

error_reporting(E_ALL^E_DEPRECATED); 

¿Hay alguna razón fundamental por la que esta sería una mala idea?

Respuesta

3

Si aún no lo ha hecho, debería leer migration guide con especial atención en Backward Incompatible Changes y Removed Extensions.

Tiene problemas mayores que obsolescencia. Ignorar E_DEPRECATED no será suficiente. Debido a los cambios incompatibles, también habrá otro tipo de errores o, tal vez, incluso peores, comportamientos inesperados.

Aquí está un ejemplo sencillo:

<?php 
function goto($line){ 
    echo $line; 
} 
goto(7); 
?> 

Este código funciona bien y la salida 7 en PHP 5.2.x, pero le dará un error de análisis en PHP 5.3.x.

Lo que debe hacer es tomar cada elemento de esa guía y verificar su código y actualizarlo cuando sea necesario. Para hacerlo más rápido, puede ignorar la funcionalidad obsoleta en una primera fase y simplemente desactivar el informe de errores para E_DEPRECATED, pero no puede asumir que solo obtendrá advertencias inofensivas al realizar la transferencia a otra sucursal principal de PHP.

Además, no olvide su hack y solucione los problemas obsoletos tan pronto como sea posible.

Saludos,
Alin

Nota: Me trataron de responder a la pregunta desde un punto de vista práctico, así que por favor no me diga que haciendo caso omiso de las advertencias es malo. Lo sé, pero también sé que el tiempo no es un recurso infinito.

4

Bueno, podrías olvidarte de configurar la bandera y preguntarte por qué tu aplicación se rompe en una próxima actualización de PHP. Puede ser muy frustrante depurar una aplicación sin informes de errores adecuados. Esa es una razón por la que puedo pensar.

Sin embargo, si lo hace, documente en alguna parte. Puede ahorrarte un par de horas antes de recordar establecer la bandera en absoluto.

+3

Una vez que estas características obsoletas se eliminan de PHP, el código que las usa comenzará a producir E_WARNING o errores fatales, por lo que será difícil pasar por alto;) – Mchl

+0

Bueno, no sabía eso :). Thx para compartir. – TheGrandWazoo

1

Supongo que tiene algún tipo de servidor de prueba? Si no, realmente deberías configurar una y probar tu código en PHP 5.3. Si su código es completamente probado por la Unidad, la prueba tomará unos segundos y su reparación será bastante rápida también, ya que las pruebas de la unidad le indicarán exactamente dónde buscar. De lo contrario, considere la posibilidad de hacer que Unit Testing lo considere prioritario antes de la próxima versión y, mientras tanto, hágalo todo, primero con E_DEPRECATED advertencias deshabilitadas y solucione todo lo que aparezca, y luego vuelva a habilitarlo una vez que tenga tiempo. También podría ejecutar un descubrimiento y reemplazo global para corregir errores más fáciles.

Cuestiones relacionadas