No PHP 5 há um novo Modelo de Objetos. A forma como o PHP trata os objetos foi completamente reescrita, permitindo uma melhor performance e mais recursos. Em versões anteriores do PHP, objetos eram tratados como tipos primitivos (por exemplo inteiros e strings). A desvantagem desse método é que semânticamento todo o objeto é copiado quando uma variável é definida, ou passado como parâmetro para um método. Na nova abordagem, objetos são referenciados por identificadores, e não por valores (pode-se pensar como um manipulador para identificadores de objetos).
Muitos programadores PHP não estão cientes das peculiaridades do antigo modelo de objetos e, consequentemente, a maioria das aplicações PHP funcionarão normalmente, ou com poucas modificações.
O novo Modelo de Objetos está documentado na Referência da Linguagem.
No PHP 5, funções com o nome da classe é executada como construtor somente se for definida na mesma classe. No PHP 4, ela é executada mesmo se for definida em uma classe filha.
Veja mais sobre a diretiva zend.ze1_compatibility_mode para compatibilidade com o PHP 4.