跳到内容
导航菜单
切换导航
登录
产品
行动
自动化任何工作流
包装
托管和管理包
安全
查找并修复漏洞
代码空间
即时开发环境
副驾驶员
使用AI编写更好的代码
代码审查
管理代码更改
问题
计划和跟踪工作
讨论
在代码外协作
探索
所有功能
文档
GitHub技能
博客
解决
对于
企业
团队
创业公司
教育类
按解决方案
CI/CD和自动化
开发运营
DevSecOps公司
资源
学习途径
白皮书、电子书、网络研讨会
客户案例
合作伙伴
开放源代码
GitHub赞助商
资助开源开发人员
ReadME项目
GitHub社区文章
存储库
话题
趋向
收藏
定价
搜索或跳转到。。。
搜索代码、存储库、用户、问题、推送请求。。。
搜索
清除
搜索语法提示
提供反馈
我们阅读了每一条反馈,并非常认真地对待您的意见。
包括我的电子邮件地址以便联系我
保存的搜索
使用保存的搜索更快地筛选结果
姓名
查询
要查看所有可用的限定符,请参阅我们的
文档
.
登录
注册
您使用另一个选项卡或窗口登录。
重新加载
刷新会话。
您在另一个选项卡或窗口中注销。
重新加载
刷新会话。
您在另一个选项卡或窗口上切换了帐户。
重新加载
刷新会话。
解除警报
{{消息}}
php(电话)
/
php-src型
公共
通知
您必须登录才能更改通知设置
福克
7.7公里
星星
37.4公里
代码
问题
556
Pull请求
415
行动
安全
洞察力
其他导航选项
代码
问题
Pull请求
行动
安全
洞察力
文件夹
php-7.4.0RC4软件包
面包屑
php-src型
/
正在升级
责备
责备
最新提交
历史
历史
812行(654个位置)·31.7 KB
php-7.4.0RC4软件包
面包屑
php-src型
/
正在升级
顶部
文件元数据和控件
代码
责备
812行(654个位置)·31.7 KB
原始
1
2
三
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
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
PHP 7.4升级注释
1.向后不兼容的更改
2.新功能
3.SAPI模块的变化
4.不推荐的功能
5.更改的功能
6.新功能
7.新类和接口
8.删除了扩展和SAPI
9.延期的其他变更
10.新的全球常数
11.INI文件处理的更改
12.Windows支持
13.迁移到pkg-config
14.其他变更
15.性能改进
========================================
1.向后不兼容的更改
========================================
-核心:
。尝试将null、bool、int、float或resource类型的值用作
数组(例如$null[“key”])现在将生成通知。
但这不是
影响list()执行的数组访问。
副本请求:
https://wiki.php.net/rfc/notice-for-non-valid-array容器
.get_declared_classes()不再返回没有
尚未实例化。
。“fn”现在是保留关键字。
特别是,它不能再用作
函数或类名。
它仍然可以用作方法或类常量
名称。
。通过引用传递(非引用)list()赋值的结果是
现在一直不允许。
以前,如果右侧
是一个简单(CV)变量,不作为list()的一部分出现。
. `<?
php`现在,文件末尾(不带换行符)将是
解释为打开的PHP标记。
以前它被解释为
`<?
php`并导致语法错误(short_open_tag=1)或
解释为文字`<?
php`string(short_open_tag=0)。
。在流上使用include/request时,将调用stream_set_option()
使用STREAM_OPTION_READ_BUFFER选项。
自定义流包装器
实现可能需要实现stream_set_option()方法
避免警告(总是返回false就足够了)。
-BC数学:
.BCMath函数现在将在传递非标准格式的数字时发出警告,例如
作为“32foo”。
参数将被解释为零(如前所述)。
-卷曲:
。尝试序列化CURLFile类现在将生成异常。
以前,只在非序列化时引发异常。
。不推荐使用CURLPIPE_HTTP1,并且从cURL起不再支持使用
7.62.0.
。curl_version()的$version参数已弃用。
如果没有任何值
等于传递的默认CURLVERSION_NOW,则会发出警告,并且
参数被忽略。
-日期:
。对DateTime(Immutable)实例调用var_dump()或类似命令将不会
在对象上留下更长的可访问属性。
。DateInterval对象的比较(使用==、<等)现在将生成
警告并始终返回false。
以前所有DateInterval对象都是
被认为是平等的,除非他们有财产。
-国际:
。idn_to_ascii()和idn_te_utf8()的默认参数值现在为
INTL_IDNA_VARIANT_UTS46,而不是弃用的INTL_IDNA_VARIANT_2003。
-我的SQLi:
。嵌入式服务器功能已删除。
从那以后它就坏了
至少PHP 7.0。
。已删除未记录的mysqli::$stat属性,以支持
mysqli::stat()。
-Openssl:
。openssl_random_pseudo_bytes()函数现在将在中引发异常
错误情况,类似于random_bytes()。
特别是,错误是
如果请求的字节数小于*或等于*零,则抛出,
如果无法收集足够的随机性,则抛出异常。
如果
函数不抛出,所以没有必要显式检查它。
副本请求:
http://php.net/manual/de/function.openssl-random-pseudo-bytes.php
-项目:
。pcntl_signal()的$restart_syscalls标志现在将用于
SIGALARM。之前它被硬编码为false。
减少倒退
但是,SIGALARM的默认值将保持为false。
-PCRE公司:
。当使用PREG_UNMATCHED_AS_NULL模式时,尾随不匹配捕获
组现在也将设置为null(或者如果偏移量捕获为
启用)。
这意味着$匹配项的大小将始终相同。
-珍珠:
。默认情况下不再启用PEAR(包括PECL)的安装。
它
可以使用--with-pear显式启用。
此选项已弃用,并且
将来可能会被删除。
-项目开发办公室:
。尝试序列化PDO或PDOStatement实例现在将生成
异常而非PDOException,与其他内部异常一致
不支持序列化的类。
-反思:
。如果尝试,反射对象现在将生成异常
序列化它们。
从未对反射对象进行序列化
支持并导致反射对象损坏。
一直以来
现在明确禁止。
-SPL:
。现在对ArrayObject实例调用get_object_vars()将始终返回
ArrayObject本身(或子类)的属性。
以前是这样的
返回包装数组/对象的值,除非STD_PROP_LIST
已指定标志。
其他受影响的操作包括:
*反射对象::getProperties()
*reset()、current()等。请改用迭代器方法。
*可能其他人以列表的形式处理对象属性。
(数组)强制转换不受影响。
他们将继续返回
包装数组或ArrayObject属性,具体取决于
使用STD_PROP_LIST标志。
如果零为,则.SplPriorityQueue::setExtractFlags()将引发异常
通过。
以前,这会在
下一次提取操作。
现在有.ArrayObject、ArrayIterator、SplDoublyLinkedList和SplObjectStorage
除了支持
可串行化接口。
这意味着在
旧的PHP版本仍然可以取消序列化,但新的有效负载由
旧版本无法理解PHP 7.4。
-标准:
。已删除“o”序列化格式。
因为它从来不是由
PHP,这可能只会破坏手动创建的字符串的非序列化。
。密码哈希算法标识符现在是可以为空的字符串,而不是
而不是整数。
*PASSWORD_DEFAULT为int 1;
现在为空
*PASSWORD_BCRYPT为int 1;
现在是字符串“2y”
*PASSWORD_ARGON2I为int 2;
现在是字符串“argon2i”
*PASSWORD_ARGON2ID为int 3;
现在是字符串“argon2id”
应用程序正确使用常量PASSWORD_DEFAULT,
PASSWORD_BCRYPT、PASSWORD_ARGON2I和PASSWORD将继续
功能正常。
.htmlenities()现在将抛出一个通知(而不是一个严格的标准
警告)如果它与仅用于基本实体的编码一起使用
支持替换,在这种情况下,它等价于
htmlspecialchars()。
如果操作失败,.fread()和fwrite()现在将返回false。
以前返回了一个空字符串或0。
EAGAIN/EWOULDBLOCK不是
考虑的故障。
普通文件上的.fread()和fwrite()现在将在失败时发出通知,
例如,尝试写入只读文件资源时。
.round(-0.0)现在将返回-0.0而不是+0.0。
-标记器:
.token_get_all()现在将为意外事件发出T_BAD_CHARACTER标记
字符,而不是在令牌流中留下漏洞。
========================================
2.新功能
========================================
-核心:
。添加了对类型化属性的支持。
例如:
类用户{
公共int$id;
公共字符串$name;
}
这将强制$user->id只能被赋值为整数和
$user->name只能分配字符串。
有关更多信息,请参阅
副本请求:
https://wiki.php.net/rfc/typed_properties_v2
。添加了对带有隐式by-value范围绑定的箭头函数的支持。
例如:
$系数=10;
$nums=数组映射(fn($num)=>$num*$factor,$nums);
副本请求:
https://wiki.php.net/rfc/arrow_functions_v2
。增加了对有限返回类型协方差和参数类型的支持
相反。
以下代码现在可以工作了:
A类{}
类B扩展了A{}
班级制作人{
公共函数方法():{}
}
类ChildProducer扩展Producer{
公共函数方法():B{}
}
仅当使用自动加载时,才提供完全差异支持。
内部
只有单个文件的非循环类型引用是可能的,因为
类需要在被引用之前可用。
副本请求:
https://wiki.php.net/rfc/covariant-returns-and-contravariant-parameters网站
。添加了对合并赋值(??=)运算符的支持。
例如:
$array['key']??=
computeDefault();
//大致相当于
if(!isset($array['key'])){
$array['key']=computeDefault();
}
副本请求:
https://wiki.php.net/rfc/null_calesce_equal_operator(https://维基.php.net)
。增加了对阵列内部解包的支持。
例如:
$arr1=[3,4];
$arr2=[1,2,…$arr1,5];
//$arr2==[1、2、3、4、5]
副本请求:
https://wiki.php.net/rfc/spread_operator_for_array网站
。增加了对数字文本中下划线分隔符的支持。
一些例子:
6.674_083e-11;//
浮动
299_792_458; //
十进制的
0xCAFE_F00D;//
十六进制
0b0101_1111;//
二元的
副本请求:
https://wiki.php.net/rfc/numeric_literal_seleparator(https://维基.php.net)
。已添加对WeakReferences的支持。
副本请求:
https://wiki.php.net/rfc/weakrefs网站
。现在允许从__toString()引发异常。
在此之前
导致了一个致命错误。
字符串转换中的现有可恢复致命错误
已转换为错误异常。
副本请求:
https://wiki.php.net/rfc/tostring例外
-曲线:
.CURLFile现在除了支持普通文件名外,还支持流包装器,如果
扩展是根据libcurl>=7.56.0构建的。
溪流可能
需要可查找。
-过滤器:
FILTER_VALIDATE_FLOAT过滤器现在支持min_range和max_range
选项,其语义与FILTER_VALIDATE_INT相同。
-外国金融机构:
。一个新的扩展,提供了调用本机函数、访问
本机变量和创建/访问C库中定义的数据结构。
副本请求:
https://wiki.php.net/rfc/ffi
-GD:
。添加了“散射”图像过滤器(IMG_filter_scatter)以应用散射
过滤到图像。
此过滤器具有以下原型:
图像过滤器($im,IMG_FILTER_SCATTER,int$sub,int$plus,数组$colors=[]);
$colors数组可以使用一组索引颜色填充到
应用散射像素移位。
注意,这个过滤器的结果总是随机的。
-哈希:
。使用Castagnoli多项式添加了“crc32c”散列。
此crc32变体是
由存储系统使用,如iSCSI、SCTP、Btrfs和ext4。
-Mbstring:
。添加了mb_str_split()函数,该函数提供与
str_split(),但操作的是代码点而不是字节。
副本请求:
https://wiki.php.net/rfc/mb_str_split网站
。添加了mbstring.regex_retry_limit ini设置,默认值为1000000。
它
限制一次mbregex期间可能执行的回溯量
匹配,从而防止指数回溯攻击(ReDOS)。
此设置仅在链接到oniguruma>=6.8.0时生效。
-OP缓存:
。已添加对预加载代码的支持。
副本请求:
https://wiki.php.net/rfc/peload网站
-PCRE公司:
。现在可以使用preg_replace_callback()和preg_rplace_call back_array()函数
接受附加的$flags参数,并支持
PREG_OFFSET_CAPTURE和PREG_UNMATCHED_AS_NULL标志。
这会影响
传递给回调函数的匹配数组的格式。
-项目开发办公室:
。现在可以将用户名和密码指定为的PDO DSN的一部分
mysql、mssql、sybase、dblib、firebird和oci驱动程序。
在此之前
只有pgsql驱动程序支持。
如果指定了用户名/密码
在构造函数和DSN中,构造函数优先。
新PDO(“mysql:host=xxx;port=xxx;
-PDO_OCI:
.PDOStatement::getColumnMeta()现在可用
-PDO_SQL网站:
.PDOStatement::getAttribute(PDO::SQLITE_ATTR_READONLY_STATEMENT)允许
检查语句是否为只读,即如果它没有修改
数据库。
.PDO::setAttribute(PDO::SQLITE_ATTR_EXTENDED_RESULT_CODES,true)启用
在errorInfo()中使用SQLite3扩展结果代码。
-SQLite3:
。添加了SQLite3::lastExtendedErrorCode()以获取最后一个扩展结果
代码。
。添加了SQLite3::enableExtendedResultCodes($enable=true),这将使
SQLite3::lastErrorCode()返回扩展的结果代码。
-标准:
.strip_tags()现在还接受允许的标记数组:而不是
strip_tags($str,'<a><p>')现在可以编写strip_tages($stra,['a','p'])。
。添加了一种新的自定义对象序列化机制
使用了两种新的魔术方法:
//返回包含对象所有必要状态的数组。
公共函数__serialize():数组;
//从给定的数据数组恢复对象状态。
公共函数__unserialize(数组$data):void;
新的序列化机制取代了Serializable接口,
它将在将来被弃用。
副本请求:
https://wiki.php.net/rfc/custom_object_serialization网站
。用于unserialize()的新“max_depth”选项,以及
添加了unserialize_maxdepth ini设置。
这些控制着
非序列化期间允许的结构最大深度,以及
旨在防止堆栈溢出。
默认深度限制为4096
可以通过设置unserialize_max_depth=0来禁用。
现在可以调用.array_merge()和array_merge_recursive()而不调用任何
参数,在这种情况下,它们将返回一个空数组。
这很有用
与排列运算符结合使用,例如array_merge(…$arrays)。
.proc_open()现在接受命令的数组而不是字符串。
在
这种情况下,流程将直接打开(无需通过
shell),PHP将处理任何必要的参数转义。
proc_open(['php','-r','echo“Hello World\n”;'],$descriptors,$pipes);
.proc_open()现在支持“重定向”和“空”描述符。
例如:
//如外壳上的2>&1
proc_open($cmd,[1=>['pipe','w'],2=>['重定向',1]],$pipes);
//比如shell上的2>/dev/null或2>nul
proc_open($cmd,[1=>['pipe','w'],2=>['完全']],$pipes);
当PHP为
在没有libar的情况下建造。
副本请求:
https://wiki.php.net/rfc/sodium.argon.hash网址
========================================
3.SAPI模块的变化
========================================
========================================
4.不推荐的功能
========================================
-核心:
。不推荐使用不带显式括号的嵌套三元运算符:
//类似代码
一美元$
b:$c$
d:美元
//应替换为(当前解释)
($a?$b:$c)$
d:美元
//或(可能的预期解释)
一美元$
b:($c?$d:$e)
副本请求:
https://wiki.php.net/rfc/ternary_associativity网站
。不推荐使用大括号的数组和字符串偏移量访问语法。
使用$str[$idx]代替$str{$idx}。
副本请求:
https://wiki.php.net/rfc/deprecate_curly_braces_array_access
。不赞成使用(real)强制转换,请改用(float)。
.通过组合
ReflectionMethod::getClosure()和闭包重新绑定已被弃用。
正在执行
因此相当于静态调用一个非静态方法
自PHP 7.0以来已弃用。
。不推荐取消绑定使用$this的非状态闭包的$this。
。在没有父类的类中使用“parent”是不推荐的,并且会引发
未来的编译时错误。
目前,错误仅限于
在运行时访问父级时生成。
。allow_url_include ini指令已弃用。
启用它将生成
启动时的弃用通知。
-通信:
。导入具有不区分大小写的常量注册的类型库
已弃用。
-过滤器:
.FILTER_SANITIZE_MAGIC_QUOTES已弃用,请使用FILTERS_SANITIZE_ADD_SLASHES
而不是。
-Mbstring:
。不推荐将非字符串模式传递给mb_ereg_replace()。
目前
非字符串模式被解释为ASCII码点。
在PHP 8中
模式将被解释为字符串。
。不推荐将编码作为第三个参数传递给mb_strrpos()。
相反
传递0偏移量并将其编码为第四个参数。
-LDAP:
.ldap_control_paged_result_response和ldap_control_paged_result是
已弃用。
分页控件可以与ldap_search一起发送。
-反思:
。调用ReflectionType::__toString()现在会生成一个弃用通知。
此方法已被弃用,取而代之的是ReflectionNamedType::getName()
自PHP 7.1以来的文档中,但没有抛出弃用通知
出于技术原因。
。所有Reflection类上的export()方法都已弃用。
构造一个
反射对象并将其转换为字符串:
//ReflectionClass::export(Foo::class,false)是:
echo new ReflectionClass(Foo::class),“\n”;
//$str=ReflectionClass::export(Foo::class,true)是:
$str=(string)new ReflectionClass(Foo::class);
-插座:
。的AI_IDN_ALLOW_UNASSIGNED和AI_IDN_USE_STD3_ASCII_RULES标志
socket_addrinfo_lookup()已弃用,原因是中的上游弃用
格利布。
-标准:
.将无效字符传递给“base_convert()”、“bindec()”和“octdec()”
和“hexdec()”现在将生成一个弃用通知。
结果将
仍然会像不存在无效字符一样进行计算。
领导和
尾部空白,以及0x类型的前缀(取决于基数)
继续被允许。
。不推荐在对象上使用array_key_exists()。
而是使用isset()
或property_exists()。
。is_real()函数已弃用,请改用is_float()。
。get_magic_quotes_gpc()和get_magic_quotes _runtime()函数包括
已弃用。
他们总是返回false。
。hebrevc()函数已弃用。
它可以替换为
nl2br(hebrev($str)),或者最好使用Unicode RTL支持。
。convert_cyr_string()函数已弃用。
它可以被一个替代
mb_convert_string()、iconv()或UConverter。
。money_format()函数已弃用。
它可以被替换为
intl NumberFormatter功能。
。ezmlm_hash()函数已弃用。
。不推荐使用restore_include_path()函数。
它可以替换为
ini_restore('include_path')。
。不推荐按相反顺序将参数传递给内爆(),请使用
内爆($glue,$parts)而不是内爆($parts,$glue)。
========================================
5.更改的功能
========================================
-SPL:
.SplFileObject::fputcsv()、::fgetcsv(”)和::setCsvControl()现在接受
空字符串作为$escape参数,这将禁用专用PHP
逃逸机制。
SplFileObject::getCsvControl()现在还可以返回
相应地,第三个数组元素的空字符串。
-标准:
现在,.fputcsv()和fgetcsv()接受一个空字符串作为$escape参数,
这将禁用专有的PHP转义机制。
的行为
str_getcsv()已相应调整(以前,空字符串为
与使用默认值相同)。
Windows上的.proc_open()可以传递一个“create_process_group”选项。
它
如果子进程应该处理CTRL事件,则为必填项。
.password_hash()现在接受可为null的字符串和int作为$algo参数。
.password_eeds_rehash()现在接受可为null的字符串和作为$algo的int
参数。
========================================
6.新功能
========================================
-核心:
。添加了get_mangled_object_vars($object)函数,该函数返回损坏的
对象属性。
它返回与(数组)$object相同的结果
它忽略重载数组强制转换的异常,例如
数组对象。
-GD:
。添加了imagecreatefromtga()函数,允许在TGA中读取图像
格式。
TGA支持现在也由gd_info()和imagetypes()表示。
请注意,imagecreatefromstring()和
getimage大小()。
-OpenSSL:
。添加了openssl_x509_verify(mixed cert,mixed key)函数,用于验证
使用公钥对证书进行签名。
包裹在
OpenSSL的X509_verify()函数。
请参见<
https://github.com/php/php-src/pull/3624
>.
-项目:
.添加了bool-pcntl_unshare(int标志)函数,该函数允许分离
当前与共享的流程执行上下文的部分
其他流程。
明确地说,它允许您取消共享装载、IPC、UTS、,
网络、PID、用户和cgroup命名空间。
-SQLite3:
。添加了SQLite3Stmt::getSQL()以检索语句的SQL。
如果为true
作为$expanded参数传递,查询参数将替换为
如果使用libsqlite≥3.14,则按其当前绑定值返回值。
。添加了SQLite3::backup()以通过SQLite3联机创建数据库备份
备份API。
-标准
.bool sapi_windows_set_ctrl_handler(可调用处理程序,[,bool add=true])-
在收到CTRL事件时设置或删除处理程序函数。
处理者
函数应该具有以下签名:“function handler(int$event)”。
.bool sapi_windows_generate_ctrl_event(int类型,int pid)-发送ctrl事件
到另一个进程。
.array password_algos()-返回所有已注册密码的完整列表
散列算法。
有关更多详细信息,请参阅RFC:
https://wiki.php.net/rfc/password_registry网站
========================================
7.新类和接口
========================================
-反思:
。添加了一个新的ReflectionReference类,它允许检测
引用并比较它们的身份。
有关更多详细信息,请参阅RFC:
https://wiki.php.net/rfc/reference_reflection网站
========================================
8.删除了扩展和SAPI
========================================
-Interbase公司:
。基底间扩展已移至PECL。
访问InterBase
和/或基于FireBird的数据库在PDO_FireBird中仍然可用
扩展。
有关更多详细信息,请参阅RFC:
https://wiki.php.net/rfc/deprecate-and-remove-ext-interbase
-重新编码:
。已将重新编码扩展移到PECL。
用于字符集/编码
转换可以使用iconv或mbstring扩展。
副本请求:
https://wiki.php.net/rfc/unbundle_recode网站
-WDDX公司:
。WDDX扩展已被弃用并移至PECL。
副本请求:
https://wiki.php.net/rfc/deprecate-and-remove-ext-wddx
========================================
9.延期的其他变更
========================================
-GD:
。捆绑libgd中imagecropauto()的行为已与同步
libgd系统:
*IMG_CROP_DEFAULT不再回到IMG_CROP_SIDES
*阈值裁剪现在使用系统libgd的算法
。imagecropauto()的默认$mode参数已更改为
IMG_CROP_DEFAULT;
传递-1现在已被弃用。
.imagescale()现在支持将纵横比保持为固定高度
通过传递-1作为$newwidth。
-过滤器:
。筛选器扩展不再公开--with-pcre-dir for Unix构建和
现在可以在使用时可靠地构建为共享/
再次配置。
-哈希:
。哈希扩展不能再被禁用,并且始终是不可分割的一部分
任何PHP构建的,类似于日期扩展。
-国际:
。国际延期现在至少需要ICU 50.1。
。ResourceBundle现在实现了Countable。
-Ldap:
。已删除对nsldap的支持。
。已删除对umich_ldap的支持。
-库xml:
。所有基于libxml的扩展现在都需要libxml 2.7.6或更新版本。
-Mbstring:
。oniguruma库不再与PHP捆绑,而是libonig需要
在系统上可用。
或者,可以使用disable-mbregex
禁用mbregex组件。
-OP缓存:
。--disable-opcache-file |--enable-opcach-file配置选项
删除opcache.file_cache INI指令。
-项目开发办公室:
。现在可以在SQL查询中避开问号以避免问号
被解释为参数占位符。
写“??”允许发送
数据库的单个问号,例如使用PostgreSQL JSON键
存在“?”运算符。
有关更多详细信息,请参阅RFC:
https://wiki.php.net/rfc/pdo_escape_placeholders网站
-反思:
。类、属性、函数和常量修饰符的数值为
改变。
不筛选方法和属性
ReflectionClass::getMethods()和ReflectionClass::getProperties(),或测试
反射结果…::
getModifiers(),使用硬编码数值。
请使用相应的常量(例如ReflectionMethod::IS_PUBLIC)。
-简单XML:
.SimpleXMLElement现在实现了Countable。
-SQLite3:
。捆绑的libsqlite已被删除。
要构建SQLite3扩展
现在需要系统libsqlite3≥3.7.4。
构建PDO_SQLite扩展
现在需要libsqlite3≥3.5.0的系统。
SQLite3、SQLite3Stmt和SQLite3Result的(Un)序列化现在
明确禁止。
以前,这些类的实例的序列化
是可能的,但取消序列化会产生无法使用的对象。
。@param符号现在也可以用于表示SQL查询参数。
-邮政编码:
。捆绑的libzip库已被删除。
现在系统libzip>=0.11
构建扩展所必需的。
========================================
10.新的全球常数
========================================
-Mbstring:
.MB_ONIGURUMA_VERSION指定ONIGURUMA库的版本
这是mbregex建造的。
-插座:
。添加了FreeBSD特定的套接字选项:
.SO_标签
.SO同行标签
.SO_LISTENQLIMIT公司
.SO列表
.SO_USER_COOKIE软件
-标准:
.PHP_WINDOWS_EVENT_CTRL_C
.PHP_WINDOWS_EVENT_CTRL_BREAK(.PHP_WINDOWS_EVENT_CTRL_BREAK)
-整洁:
.TIDY_TAG_ARTICLE轮胎
.TIDY_TAG_ASIDE(轮胎_标签_侧面)
.TIDY_TAG_AUDIO
.TIDY_TAG_BDI
.TIDY_TAG_CANVAS公司
.TIDY_TAG_COMMAND(.TIDY_TAG_COMMAND)
.TIDY_TAG_DATALIST公司
.TIDY_TAG_详细信息
.TIDY_TAG_DIALOG
.TIDY_TAG_忽略
.TIDY_TAG_FIGURE(轮胎标签)
.tity_TAG_FOOTER(TIDY_TAG_FOOTER)
.TIDY_TAG_头
.TIDY_TAG_H组
.TIDY_TAG_MAIN公司
.TIDY标签
.TIDY_TAG_MENUITEM公司
.TIDY标签流量计
.TIDY_TAG_NAV
.TIDY_TAG_输出
.TIDY_TAG_进度
.TIDY_TAG_部分
.TIDY_TAG_来源
.TIDY标签_摘要
.TIDY_TAG_TEMPLATE(.TIDY_TAG_TEMPLATE)
.TIDY_TAG_TIME(时间)
.TIDY_TAG_TRACK(轮胎_拖车)
.TIDY_TAG_视频
========================================
11.INI文件处理的更改
========================================
-zend.exception_ignore_args(zend.exception_ignore_args除外)
。新的INI指令用于从堆栈跟踪中包含或排除参数
为异常生成。
-opcache.preload用户
.新的INI指令,用于指定预加载代码所使用的用户帐户
如果要以root身份运行,则执行(这是不允许的
出于安全原因)。
========================================
12.Windows支持
========================================
-统计数据:
。stat实现已被重构。
-提供了一个基于NTFS文件索引的索引节点号。
-设备编号现在基于卷序列号。
请注意,这两个值都是从系统中导出的,并按64位提供
系统。
在32位系统上,这些值可能会溢出
PHP,所以它们是假的。
-通过设置处理程序函数,可以捕获控制台上的CTRL+C和CTRL+BREAK
使用sapi_windows_set_ctrl_handler()。
-configure现在将附加的CFLAGS和LDFLAGS集视为环境
变量。
-OPcache现在支持每个用户通过
INI指令opcache.cache_id。所有具有相同缓存id和
用户共享OPcache实例。
-OpenSSL默认配置路径已更改为
“C:\Program Files\Common Files\SSL\openssl.cnf”和
分别是“C:\Program Files(x86)\Common Files\SSL\openssl.cnf”。
========================================
13.迁移到pkg-config
========================================
已经迁移了许多扩展以专门使用pkg-config
检测库依赖项。
通常,这意味着不使用
--with-foo-dir=仅dir或类似值--使用with-foo。
自定义库路径可以
通过向PKG_CONFIG_PATH添加其他目录或通过
通过FOO_CFLAGS和FOO_LIBS显式指定编译选项。
以下扩展和SAPI受到影响:
-卷曲:
.--with curl不再接受目录。
-魅力:
.--with-enchent不再接受目录。
-FPM公司:
.--with-fpm-systemd现在只使用pkg-config进行libsystem检查。
这个
libsystemd最低要求版本为209。
-GD:
.--with-gd变为--enable-gd(是否完全启用扩展),并且
--with-external-gd(选择使用外部libgd,而不是
捆绑一个)。
.--with-png-dir已删除。
libpng是必需的。
.--with-zlib-dir已删除。
zlib是必需的。
.--with-freetype-dir变为--with-feetype。
.--使用jpeg时,dir变为--使用jpeg。
.--with-webp-dir变为-with-webp。
.--with-xpm-dir变为--with-xpm。
-IMAP公司:
.--使用kerberos时,不再接受目录。
-国际:
.--with-icu-dir已删除。
如果传递了--enable-intl,则libicu为
始终是必需的。
-Ldap:
.--with-ldap-sasl不再接受目录。
-库xml:
.--with-libxml-dir已删除。
--enable libxml变为--with libxml。
.--with-libexpat-dir已重命名为--with-expat,不再接受
目录。
-精简速度:
.--with-letespeed变为--enable-letespeed。
-Mbstring:
.--with-onig已删除。
除非--disable-mbregex已经通过,
libonig是必需的。
-ODBC(开放式数据库):
.--with-iodbc不再接受目录。
.--带-unixODBC但不带目录,现在使用pkg-config(首选)。
没有libodbc.pc的旧版本仍然接受目录。
-OpenSSL:
.--with-openssl不再接受目录。
.--使用kerberos时,不再接受目录。
-PCRE公司:
.--with-pcre-regex已删除。
相反--提供了with-external-pcr
选择使用外部PCRE库,而不是捆绑的PCRE库。
-PDO_SQL网站:
.--使用pdo,sqlite不再接受目录。
-阅读行:
.--with-libedit不再接受目录。
-钠:
.--with-sodium不再接受目录。
-SQLite3:
.--with-sqlite3不再接受目录。
-XSL(XSL):
.--with xsl不再接受目录。
-邮政编码:
.--with-libzip已删除。
.--enable-zip变为--with-zip。
========================================
14.其他变更
========================================
========================================
15.性能改进
========================================
-核心:
已经添加了用于array_key_exists()函数的专用VM操作码,
如果可以静态执行,则可以提高此函数的性能
断然的。
在命名空间代码中,这可能需要编写\array_key_exists()
或显式导入函数。
-PCRE公司:
。当UTF-8模式下的preg_match()(“u”修饰符)在
相同的字符串(但可能不同的偏移量),将只对其进行检查
UTF-8有效期一次。
此时无法执行该操作。