Aunque PHP 4 viene con una gran cantidad de
caracterÃsticas, funciones y extensiones nuevas, puede que
aun encuentre funciones de la versión 3 que hacen falta. Un
número pequeño de funciones centrales han
desaparecido ya que no funcionan con el nuevo esquema de
separación de análisis sintáctico y
ejecución que se introdujo en PHP 4 con el motor
Zend. Otras funciones, e incluso extensiones completas, se han
marcado obsoletas a medida que nuevas funciones y extensiones
cubren las mismas tareas y en ocasiones en una forma más
general. Algunas funciones simplemente no han sido portadas aun y
finalmente algunas funciones o extensiones pueden faltar debido a
conflictos de licencias.
Dado que PHP 4 separa ahora el análisis sintáctico
de la ejecución, ya no es posible modificar el
comportamiente del analizador sintáctico (embebido ahora
en el motor Zend) en tiempo de ejecución, dado que el
análisis ya ha ocurrido para entonces. De modo que la
función short_tags() ya no existe. Aun
puede modificar el comportamiento del analizador
sintánctico definiendo los valores apropiados en el
archivo php.ini.
Otra caracterÃstica de PHP 3 que no es parte de PHP 4 es
la interfaz de depuración integrada. Existen adiciones de
terceros para el motor Zend que añaden funcionalidades
similares.
Las extensiones de bases de datos Adabas y Solid ya no
existen. Larga vida a la extensión unificada ODBC en su
lugar.
unset(), aun cuando sigue estando disponible,
es implementada ahora como una construcción del lenguaje
en lugar de una función.
Esto no tiene consecuencia alguna en el comportamiento
de unset(), pero realizar una prueba con
"unset" usando function_exists()
devolverá FALSE del mismo modo que ocurrirÃa con
otras construcciones del lenguaje que tienen apariencia de
funciones, como echo().
Otro cambio más práctico es que ya no es posible
llamar unset() indirectamente, esto
es, $func="unset"; $func($alguna_variable) no
funcionará más.