-
Notifications
You must be signed in to change notification settings - Fork 109
Expand file tree
/
Copy pathchangelog.xml
More file actions
312 lines (311 loc) · 10.8 KB
/
Copy pathchangelog.xml
File metadata and controls
312 lines (311 loc) · 10.8 KB
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
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: 6a3ce2f9a191ad00fdd709c249e6dea16df316e3 Maintainer: daijie Status: ready -->
<!-- CREDITS: Luffy, mowangjuanzi -->
<sect1 xml:id="language.oop5.changelog" xmlns="http://docbook.org/ns/docbook">
<title>OOP 变更日志</title>
<para>
这里只记录了 PHP OOP 模型的变更记录。有关变更功能的具体描述与其他相关注意事项,可以到具体的 OOP 文档链接中查看。
</para>
<para>
<informaltable>
<tgroup cols="2">
<thead>
<row>
<entry>&Version;</entry>
<entry>&Description;</entry>
</row>
</thead>
<tbody>
<row>
<entry>8.4.0</entry>
<entry>
新增:支持<link linkend="language.oop5.property-hooks">属性挂钩</link>。
</entry>
</row>
<row>
<entry>8.4.0</entry>
<entry>
添加:支持 <link linkend="language.oop5.lazy-objects">延迟对象</link>。
</entry>
</row>
<row>
<entry>8.1.0</entry>
<entry>
添加:支持类常量的 <modifier>final</modifier> 修饰符。此外,接口常量默认可覆盖。
</entry>
</row>
<row>
<entry>8.0.0</entry>
<entry>
添加:支持 <link linkend="language.oop5.basic.nullsafe">nullsafe 操作符</link> <emphasis>?-></emphasis> 来访问可能为空的对象中的属性和方法。
</entry>
</row>
<row>
<entry>7.4.0</entry>
<entry>
已变更:可以通过 <function>__toString</function> 抛出异常。
</entry>
</row>
<row>
<entry>7.4.0</entry>
<entry>
增加:支持限制返回类型协变与参数类型逆变。
如果使用自动加载,则完整的差异支持可用。
在一个文件内,只有非循环类型引用是可能的。
</entry>
</row>
<row>
<entry>7.4.0</entry>
<entry>
增加:可以给类属性增加类型。
</entry>
</row>
<row>
<entry>7.3.0</entry>
<entry>
不兼容:不再支持对使用非 &integer; 键的 <classname>Traversable</classname>
进行参数解包。该功能不是有意设计的,因此被删除。
</entry>
</row>
<row>
<entry>7.3.0</entry>
<entry>
不兼容:在以前的版本中,可以通过分配一个引用来分离静态属性,这一特性已被移除。
</entry>
</row>
<row>
<entry>7.3.0</entry>
<entry>
已变更: <link linkend="language.operators.type">instanceof</link>
运算符允许将字面量作为第一个操作数,在这种情况下,结果始终是 &false; 。
</entry>
</row>
<row>
<entry>7.2.0</entry>
<entry>
废弃:<function>__autoload</function> 方法已被废弃,请使用
<function>spl_autoload_register</function> 代替。
</entry>
</row>
<row>
<entry>7.2.0</entry>
<entry>
已变更:<literal>object</literal> 做为保留关键字,不允许做为
classes、interfaces、traits 的名称。
</entry>
</row>
<row>
<entry>7.2.0</entry>
<entry>
已变更:分组引入命名空间时,允许行尾添加多余的逗号分隔符。
</entry>
</row>
<row>
<entry>7.2.0</entry>
<entry>
已变更:参数类型扩展。
现在可以省略来自重写方法和从接口实现的参数类型。
</entry>
</row>
<row>
<entry>7.2.0</entry>
<entry>
已变更:当一个抽象类(abstract class)继承另一个抽象类时,抽象的方法现在可以被覆写。
</entry>
</row>
<row>
<entry>7.1.0</entry>
<entry>
已变更:增加系统保留关键字 <literal>void</literal> 和 <literal>iterable</literal>,不允许做为
classes、interfaces、traits 的名称。
</entry>
</row>
<row>
<entry>7.1.0</entry>
<entry>
增加:类常量增加了
<link linkend="language.oop5.visiblity-constants">访问控制(可见性)</link>。
</entry>
</row>
<row>
<entry>7.0.0</entry>
<entry>
废弃:对未声明为静态的方法(<link linkend="language.oop5.static">Static</link>)的静态调用。
</entry>
</row>
<row>
<entry>7.0.0</entry>
<entry>
废弃:PHP 4 风格的构造函数 <link linkend="language.oop5.decon">constructor</link> 已被废弃。
</entry>
</row>
<row>
<entry>7.0.0</entry>
<entry>
增加: <emphasis>use</emphasis>
组声明:同一个命名空间导入的类、函数、常量现在可以组合在一个 use 语句中。
</entry>
</row>
<row>
<entry>7.0.0</entry>
<entry>
增加:使用 <literal>new class</literal> 语法来支持
<link linkend="language.oop5.anonymous">匿名类</link>。
</entry>
</row>
<row>
<entry>7.0.0</entry>
<entry>
不兼容:遍历非 <classname>Traversable</classname> &object; 将跟遍历引用 &array;
具有相同的行为。
</entry>
</row>
<row>
<entry>7.0.0</entry>
<entry>
已变更:<link linkend="language.oop5.traits">traits</link> 里定义兼容的属性不再产生错误信息。
</entry>
</row>
<row>
<entry>5.6.0</entry>
<entry>
增加: <link linkend="object.debuginfo">__debugInfo()</link> 方法。
</entry>
</row>
<row>
<entry>5.5.0</entry>
<entry>
增加: <link linkend="language.oop5.basic.class.class">::class</link> 魔法常量。
</entry>
</row>
<row>
<entry>5.5.0</entry>
<entry>
增加: <link linkend="language.exceptions">finally</link> 来处理异常。
</entry>
</row>
<row>
<entry>5.4.0</entry>
<entry>
增加: <link linkend="language.oop5.traits">traits</link>。
</entry>
</row>
<row>
<entry>5.4.0</entry>
<entry>
已变更:如果一个<link linkend="language.oop5.abstract">抽象</link> 类定义了 <link linkend="language.oop5.decon">
构造函数</link> 的签名,它将必须被实现。
</entry>
</row>
<row>
<entry>5.3.3</entry>
<entry>
已变更: <link linkend="language.namespaces">命名空间</link> 中和类同名的方法不再被作为 <link
linkend="language.oop5.decon">构造函数</link>。这个变更不影响非命名空间中的类。
</entry>
</row>
<row>
<entry>5.3.0</entry>
<entry>
已变更:类实现接口的方法所具有的默认值不再需要和接口的默认值一致。
</entry>
</row>
<row>
<entry>5.3.0</entry>
<entry>
已变更: 现在它也能够通过一个变量来引用一个类(例如,<literal>echo $classname::constant;</literal>)。
这个变量的值不能是一个保留关键词(比如,<literal>self</literal>、<literal>parent</literal> 或 <literal>static</literal>)。
</entry>
</row>
<row>
<entry>5.3.0</entry>
<entry>
已变更: 如果<link linkend="language.oop5.overloading">重载</link>方法被定义为 <link linkend="language.oop5.static">static</link> 将导致一个 <constant>E_WARNING</constant> 级别的错误。
同时它也需要强制使用 public 的可见性。
</entry>
</row>
<row>
<entry>5.3.0</entry>
<entry>
已变更: 在 5.3.0 之前的版本,<function>__autoload</function> 函数里抛出的异常不能被 <link linkend="language.exceptions">catch</link> 块结构捕获,并会导致一个致命错误。
现在在一个前提下 <link linkend="language.exceptions">catch</link> 块能够捕获 __autoload 函数中抛出的错误。如果抛出一个自定义异常,这个自定义异常的类必须是可用的。否则 __autoload 函数可能递归自动加载这个自定义异常类。
</entry>
</row>
<row>
<entry>5.3.0</entry>
<entry>
新增: <link linkend="language.oop5.overloading">__callStatic</link> 方法。
</entry>
</row>
<row>
<entry>5.3.0</entry>
<entry>
新增: <link linkend="language.types.string.syntax.heredoc">heredoc</link>
和 <link linkend="language.types.string.syntax.nowdoc">nowdoc</link>
支持类的 <emphasis>常量</emphasis> 和属性的定义。
注意:heredoc 值必须和双引号字符串遵循同样的规则(比如,变量将被替换)。
</entry>
</row>
<row>
<entry>5.3.0</entry>
<entry>
新增: <link linkend="language.oop5.late-static-bindings">后期静态绑定</link>。
</entry>
</row>
<row>
<entry>5.3.0</entry>
<entry>
新增: <link linkend="object.invoke">__invoke</link> 方法。
</entry>
</row>
<row>
<entry>5.2.0</entry>
<entry>
已变更:<link linkend="object.tostring">__toString</link> 方法仅在直接与 <function>echo</function> 或 <function>print</function> 使用时被调用。但是现在它能在任何字符串上下文被调用(比如在 <function>printf</function> 中使用 <literal>%s</literal> ),但不是在其他类型的上下文被调用(例如 <literal>%d</literal> 修饰符)。
自 PHP 5.2.0 起,将不具有 <link linkend="object.tostring">__toString</link> 方法的对象转化为字符串将导致一个 <constant>E_RECOVERABLE_ERROR</constant> 级别的错误。
</entry>
</row>
<row>
<entry>5.1.3</entry>
<entry>
已变更:在 PHP 5 之前的版本,<literal>var</literal> 的使用已被废弃,并将产生一个 <constant>E_STRICT</constant> 级别的错误。现在它不再被废弃,因此也不会产生错误。
</entry>
</row>
<row>
<entry>5.1.0</entry>
<entry>
已变更:现在 <link linkend="object.set-state">__set_state</link> 静态方法在 <function>var_export</function> 导出类时会被调用。
</entry>
</row>
<row>
<entry>5.1.0</entry>
<entry>
新增:<link linkend="object.isset">__isset</link> 和 <link linkend="object.unset">__unset</link> 方法。
</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
-->