En PHP 5 hay un nuevo Modelo de Objetos. El manejo de PHP de objetos ha sido completamente rescrito, permitiendo un mejor rendimiento y más funcionalidades. En versiones anteriores de PHP, los objetos eran manejados como si se tratara de tipos primitivos (como enteros o strings). Como consecuencia, se copiaba semánticamente todo el objeto cuando se asignaba una variable, o cuando se pasaba como parámetro a un método. En el nuevo enfoque, a los objetos se los referencia por manejador, y no por valor (podría interpretarse al manejador como un identificador del objeto).
Muchos programadores de PHP todavía no están al tanto de las peculiaridades del antiguo modelo de objetos, y, por tanto, la mayoría de las aplicaciones PHP funcionarán sin cambios, o con muy pocas modificaciones.
El nuevo Modelo de Objetos está documentado en laReferencia del Lenguaje.
En PHP 5, las funciones que tengan el nombre de la clases, se las invoca como constructor sólo si se definen en la misma clase. En PHP 4, se llamaban incluso si estando definidas en la clase padre.
Revise también la directiva zend.ze1_compatibility_mode para conocer la compatibilidad con PHP 4.