修改链接

修改理由:
此投稿状态为 标记为已读。
标题修改:
标签修改:
内容修改:
Old | New | Differences |
---|---|---|
1 | ||
2 | 1 | PHP 8.1 已经在 [2021 年 11 月 25 日](https://wiki.php.net/todo/php81) 发布,在文章中,在本文中,我们将逐一介绍所有功能、性能改进、更改和弃用。 |
3 | 2 | |
4 | 3 | ## 新特性 | … | … |
19 | 18 | } |
20 | 19 | ``` |
21 | 20 | |
22 | ||
23 | ||
21 | ||
22 | ||
24 | 23 | 以下是它们的使用方式: |
25 | 24 | |
26 | 25 | ``` | … | … |
39 | 38 | $post->setStatus(Status::Active); |
40 | 39 | ``` |
41 | 40 | |
42 | 你可以在 [这篇文章](https://stitcher.io/blog/ | |
41 | 你可以在 [这篇文章](https://stitcher.io/blog/php-enumS) 中找到如何使用枚举的深入分析。 | |
43 | 42 | |
44 | 43 | * * * * * |
45 | 44 | … | … |
65 | 64 | |
66 | 65 | * * * * * |
67 | 66 | |
68 | ||
69 | ||
67 | ||
68 | ||
70 | 69 | ### 性能提升 PR |
71 | 70 | |
72 | 71 | … | … |
92 | 91 | |
93 | 92 | * * * * * |
94 | 93 | |
95 | ||
96 | ||
94 | ||
95 | ||
97 | 96 | ### RFC的初始值设定项中出现`new` |
98 | 97 | |
99 | 98 | 此RFC允许您在函数定义中使用关键字 `new` 作为默认参数,也可以在属性参数等地方使用。 | … | … |
106 | 105 | } |
107 | 106 | ``` |
108 | 107 | |
109 | 您可以在[这篇专题文章](https://stitcher | |
108 | 您可以在[这篇专题文章](https://stitcher.io/blog/php-81-new-in-initializers)中阅读关于此功能的所有内容。 | |
110 | 109 | |
111 | 110 | * * * * * |
112 | 111 | … | … |
137 | 136 | |
138 | 137 | * * * * * |
139 | 138 | |
140 | ||
141 | ||
139 | ||
140 | ||
142 | 141 | 你想了解更多关于PHP 8.1吗?有(PHP 8.1之路)(https://road-to-php.com/)。在接下来的十天里,你每天会收到邮件覆盖新的PHP 8.1和退出功能;之后你会自动unsubscribed所以没有垃圾邮件或跟踪。(现在就订阅!)(https://road-to-php.com/) |
143 | 142 | |
144 | 143 | ### 一流的可调用语法RFC | … | … |
165 | 164 | } |
166 | 165 | ``` |
167 | 166 | |
168 | ||
169 | ||
167 | ||
168 | ||
170 | 169 | 如果你喜欢这种代码风格,你需要创建一个新的接口 `Sluggable`,并在 `$post` 中实现它, |
171 | 170 | If you like this style of programming, you'd need to create a new interface `Sluggable` and implement it in `$post`, 交叉类型解决了这种额外的开销。 |
172 | 171 | … | … |
194 | 193 | ### 新函数 `array_is_list` RFC |
195 | 194 | |
196 | 195 | 你可能偶尔需要处理类似这样的问题:确定数组的键是否从索引0开始按数字顺序排列。例如 `json_ encode` 需要决定将 json 转换为数组还是对象。 |
197 | ||
198 | ||
196 | ||
197 | ||
199 | 198 | PHP 8.1添加了一个内置函数来确定数组是否是具有这些语义的列表: |
200 | 199 | |
201 | 200 | ``` | … | … |
261 | 260 | fclose($file); |
262 | 261 | ``` |
263 | 262 | |
264 | ||
265 | ||
263 | ||
264 | ||
266 | 265 | 因为磁盘同步是一个文件系统操作,所以`fsync`函数将只对普通文件流起作用。尝试同步非文件流将发出警告。 |
267 | 266 | |
268 | 267 | * * * * * | … | … |
291 | 290 | 或者应该使用 #[ReturnTypeWillChange] 属性暂时隐藏通知 |
292 | 291 | ``` |
293 | 292 | |
294 | ||
295 | ||
293 | ||
294 | ||
296 | 295 | 你可能注意到了,这个错误信息会在使用 `phpunit/phpunit`、`symfony/finder` 和其他流行的开源包中出现。实际是因为内部函数开始使用正确的返回类型。如果想要从标准库(如`IteratorAggregate`)中继承一个类,这时还需要添加返回类型。 |
297 | 296 | |
298 | 297 | 修复方法很简单:如果第三方软件包中出现错误,请更新软件包的代码(其中大多数已在最新版本中修复)。如果代码中出现错误,您可以添加 `ReturnTypeWillChange` 属性,在 PHP 9.0 之前抑制这些错误。下面是一个类扩展 `DateTime` 的示例: | … | … |
311 | 310 | } |
312 | 311 | ``` |
313 | 312 | |
314 | ||
315 | ||
313 | ||
314 | ||
316 | 315 | 或者你可以添加返回类型: |
317 | 316 | |
318 | 317 | ``` | … | … |
345 | 344 | by_ref($GLOBALS); |
346 | 345 | ``` |
347 | 346 | |
348 | ||
349 | ||
347 | ||
348 | ||
350 | 349 | Nikita分析了Packagist上排名前2000的包, 只发现了23个会受到这一变化的影响。我们可以得出结论,这种技术突破性变化的影响将很小,这就是为什么内部决定在PHP 8.1中添加它。请记住,考虑到这一变化对我们代码中的每个地方都有积极的性能影响,我们中的大多数人都将从这一更改中获益。 |
351 | 350 | |
352 | 351 | ### 资源到对象的迁移 | … | … |
357 | 356 | |
358 | 357 | `finfo_file`、`finfo_open`等函数用于接受和返回资源。从PHP8.1开始,它们可以使用所有的[`finfo`](https://www.php.net/manual/en/class.finfo.php)对象。 |
359 | 358 | |
360 | ||
361 | ||
359 | ||
360 | ||
362 | 361 | ** 具有`IMAPConnection` 对象的 IMAP 函数** |
363 | 362 | |
364 | 363 | 就像 fileinfo 的改变一样,IMAP 函数如 `imap_body` 和 `imap_open` 不再使用资源 | … | … |
383 | 382 | |
384 | 383 | > PHP 本身允许自动复活(根据 falsey 值自动创建数组)。这个特性非常有用,在许多 PHP 项目中都有使用,特别是在变量未定义的情况下。但是,有一点奇怪,允许从 false 和 null 值创建数组。 |
385 | 384 | |
386 | ||
387 | ||
385 | ||
386 | ||
388 | 387 | 您可以在 RFC 页面上阅读详细信息。总之,不推荐使用这种行为: |
389 | 388 | |
390 | 389 | ``` | … | … |
413 | 412 | |
414 | 413 | * * * * * |
415 | 414 | |
415 | ||
416 | ||
417 | 现在就是这样,记住我会在一年中定期更新这篇文章,所以如果你想要随时了解的话,一定要[订阅](https://stitcher.io/newsletter/subscribe)。你对 PHP 8.1感到兴奋吗?在[Twitter](https://twitter.com/brendt_gd)上告诉我! | |
416 | 418 | |
417 | ||
418 | ||
419 |