Changed: If an abstract class
defines a signature for the constructor it will now be enforced.

5.3.3

Changed: Methods with the same name as the last element of
a namespaced
class name will no longer be treated as constructor. This change doesn't
affect non-namespaced classes.

5.3.0

Changed: Classes that implement interfaces with methods that have default
values in the prototype are no longer required to match the interface's default
value.

5.3.0

Changed: It's now possible to reference the class using a variable (e.g.,
echo $classname::constant;).
The variable's value can not be a keyword (e.g., self,
parent or static).

5.3.0

Changed: An E_WARNING level error is issued if
the magic overloading
methods are declared static.
It also enforces the public visibility requirement.

5.3.0

Changed: Prior to 5.3.0, exceptions thrown in the
__autoload() function could not be
caught in the catch block, and
would result in a fatal error. Exceptions now thrown in the __autoload function
can be caught in the catch block, with
one provison. If throwing a custom exception, then the custom exception class must
be available. The __autoload function may be used recursively to autoload the
custom exception class.

Changed: The __toString()
method was only called when it was directly combined with
echo or print.
But now, it is called in any string context (e.g. in
printf() with %s modifier) but not
in other types contexts (e.g. with %d modifier).
Since PHP 5.2.0, converting objects without a __toString
method to string emits a E_RECOVERABLE_ERROR level error.

5.1.3

Changed: In previous versions of PHP 5, the use of var
was considered deprecated and would issue an E_STRICT
level error. It's no longer deprecated, therefore does not emit the error.