The change list neglects to mention the addition of the magic ::class constant, e.g. ClassName::class magically evaluates as "ClassName", without triggering autoloading of that class. This feature was added in PHP 5.5.
Changes to the PHP 5 OOP model are logged here. Descriptions and other notes regarding these features are documented within the OOP 5 documentation.
Version | Description |
---|---|
5.5.0 | Added: finally to handle exceptions. |
5.4.0 | Added: traits. |
5.4.0 | 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. |
5.3.0 | Added: The __callStatic method. |
5.3.0 | Added: heredoc and nowdoc support for class const and property definitions. Note: heredoc values must follow the same rules as double-quoted strings, (e.g., no variables within). |
5.3.0 | Added: Late Static Bindings. |
5.3.0 | Added: The __invoke() method. |
5.2.0 |
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.
|
5.1.0 | Changed: The __set_state() static method is now called for classes exported by var_export(). |
5.1.0 | Added: The __isset() and __unset() methods. |
The change list neglects to mention the addition of the magic ::class constant, e.g. ClassName::class magically evaluates as "ClassName", without triggering autoloading of that class. This feature was added in PHP 5.5.
The magic __debugInfo() was introduced in PHP 5.6.0. Not on the list.