1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169
|
<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision: 332133 $ -->
<sect1 xml:id="language.oop5.changelog" xmlns="http://docbook.org/ns/docbook">
<title>OOP Changelog</title>
<para>
Changes to the PHP 5 OOP model are logged here. Descriptions and other notes regarding
these features are documented within the OOP 5 documentation.
</para>
<para>
<informaltable>
<tgroup cols="2">
<thead>
<row>
<entry>&Version;</entry>
<entry>&Description;</entry>
</row>
</thead>
<tbody>
<row>
<entry>5.4.0</entry>
<entry>
Added: <link linkend="language.oop5.traits">traits</link>.
</entry>
</row>
<row>
<entry>5.4.0</entry>
<entry>
Changed: If an <link linkend="language.oop5.abstract">abstract</link> class
defines a signature for the constructor it will now be enforced.
</entry>
</row>
<row>
<entry>5.3.3</entry>
<entry>
Changed: Methods with the same name as the last element of
a <link linkend="language.namespaces">namespaced</link>
class name will no longer be treated as <link
linkend="language.oop5.decon">constructor</link>. This change doesn't
affect non-namespaced classes.
</entry>
</row>
<row>
<entry>5.3.0</entry>
<entry>
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.
</entry>
</row>
<row>
<entry>5.3.0</entry>
<entry>
Changed: It's now possible to reference the class using a variable (e.g.,
<literal>echo $classname::constant;</literal>).
The variable's value can not be a keyword (e.g., <literal>self</literal>,
<literal>parent</literal> or <literal>static</literal>).
</entry>
</row>
<row>
<entry>5.3.0</entry>
<entry>
Changed: An <constant>E_WARNING</constant> level error is issued if
the magic <link linkend="language.oop5.overloading">overloading</link>
methods are declared <link linkend="language.oop5.static">static</link>.
It also enforces the public visibility requirement.
</entry>
</row>
<row>
<entry>5.3.0</entry>
<entry>
Changed: Prior to 5.3.0, exceptions thrown in the
<function>__autoload</function> function could not be
caught in the <link linkend="language.exceptions">catch</link> block, and
would result in a fatal error. Exceptions now thrown in the __autoload function
can be caught in the <link linkend="language.exceptions">catch</link> 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.
</entry>
</row>
<row>
<entry>5.3.0</entry>
<entry>
Added: The <link linkend="language.oop5.overloading">__callStatic</link> method.
</entry>
</row>
<row>
<entry>5.3.0</entry>
<entry>
Added: <link linkend="language.types.string.syntax.heredoc">heredoc</link>
and <link linkend="language.types.string.syntax.heredoc">nowdoc</link>
support for class <emphasis>const</emphasis> and property definitions.
Note: heredoc values must follow the same rules as double-quoted strings,
(e.g., no variables within).
</entry>
</row>
<row>
<entry>5.3.0</entry>
<entry>
Added: <link linkend="language.oop5.late-static-bindings">Late Static Bindings</link>.
</entry>
</row>
<row>
<entry>5.3.0</entry>
<entry>
Added: The <link linkend="object.invoke">__invoke()</link> method.
</entry>
</row>
<row>
<entry>5.2.0</entry>
<entry>
Changed: The <link linkend="object.tostring">__toString()</link>
method was only called when it was directly combined with
<function>echo</function> or <function>print</function>.
But now, it is called in any string context (e.g. in
<function>printf</function> with <literal>%s</literal> modifier) but not
in other types contexts (e.g. with <literal>%d</literal> modifier).
Since PHP 5.2.0, converting objects without a <literal>__toString</literal>
method to string emits a <constant>E_RECOVERABLE_ERROR</constant> level error.
</entry>
</row>
<row>
<entry>5.1.3</entry>
<entry>
Changed: In previous versions of PHP 5, the use of <literal>var</literal>
was considered deprecated and would issue an <constant>E_STRICT</constant>
level error. It's no longer deprecated, therefore does not emit the error.
</entry>
</row>
<row>
<entry>5.1.0</entry>
<entry>
Changed: The <link linkend="object.set-state">__set_state()</link> static
method is now called for classes exported by <function>var_export</function>.
</entry>
</row>
<row>
<entry>5.1.0</entry>
<entry>
Added: The <link linkend="object.isset">__isset()</link>
and <link linkend="object.unset">__unset()</link> methods.
</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</para>
</sect1>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->
|