php7最新版本,PHP7.2版本性能介绍
本⽂主要和⼤家详细介绍PHP7.2 版本性能,希望能帮助⼤家对PHP7.2有⼀个更清晰的认识。
1. 不向后兼容的变更
Core:对于封闭资源来说,gettype()函数将返回resource(closed),取代之前的unknown type。
对于__PHP_Incomplete_Class类对象来说,is_object()函数将返回true。
移除对Netware操作系统的⽀持。
array类型转换成object类型((object)或者settype())时,将把整型键转换成属性名,这修复了之前版本的数字键不能作为属性名的问题。
object类型转换成array类型((array)或者settype())时,以及对象的属性映射到数组中(get_object_vars())时,会把整数属性转换成数字
键,这修复了之前版本的整数属性不可访问的问题。
对未定义常量的⾮限定性引⽤将导致⼀个waring级别的错误,取代之前的notice级别,之后的版本会是er
ror级别的错误。
⽀持的最低的Windows版本是Windows 7和Windows Server 2008 R2。
取消了原⽣trait属性值的兼容性检查⾏为。
object将不能被⽤作类名。
BcMath和fmod()函数⼀样,bcmod()函数取消了取模操作(%),也就是数值的⼩数部分截断变成整数。例如:bcmod('4','3.5')将返回
0.5⽽不是1。
Hashhash_hmac(),hash_hmac_file(),hash_pbkdf2()以及hash_init()(options参数为HASH_HMAC时),这些函数将不再⽀持⾮加
密的哈希函数。
JSON当json_decode()函数的第⼆个参数assoc是null时,options⽀持选项中的JSON_OBJECT_AS_ARRAY将被启⽤,在之前的版本
中这个参数是被我们⼀直忽略的。
Session移除了register_globals相关的代码,"!"可以被⽤在$_SESSION的键名中。
session被⽤来正确的管理会话状态,禁⽌⽆效操作,当代码有问题时将会触发该变化。如果你不幸遇到了这个问题,这表明你的代码是存
在问题的。sesseion_start(),session_status(),session_regenerate_id(),这些函数被⽤于设置或者返回正确的会话状态。
session_unset(),session_write_close()/session_commit(),session_abort(),session_reset(),这些函数返回从没有返回值变成
返回布尔值。他们允许允许空的参数,并且会对这些空的检查进⾏检查。
session_start(),session_set_cookie_params(),session_name(),session_module_name(),session_set_save_handler(),sessio 这些函数将禁⽌⽆效的会话状态和http头状态,返回正确的布尔值或者数值。
session.name,session.save_path,kie_kie_path,kie_domain,kie_httpo 这些ini的值的设定需通过ini_set()函数的成功调⽤,⽆效的ini修改操作将不会成功。
由于会话能够被正确管理(session_start()),部分E_ERROR级别的错误信息将转化成E_WARNING级别。
会话将不再被⽆效的和⽆⽤的会话初始化
当头部信息已经被发送,此时去设置新的ini值将⽆效(通过
session_name(),session_module_name(),session_save_path(),session_cache_limiter()和session_cache_expire()这些函
数)。
php8兼容php7吗现在这些正确的⾏为会影响到cli命令⾏模式下管理会话的状态。使⽤输出缓冲,就像是在⽹页应⽤那样将解决在cli脚本下的问题。
Standard
⾃7.1版本以来,在64位机器上,同⼀个种⼦的mt_rand()和rand()产⽣的随机数顺序可能会不⼀样。
2. 新特性
Core当重写⼀个⽅法和接⼝时,其参数类型是可省略的。这遵从了⾥⽒平衡原则的参数类型的逆变。
允许继承后的抽象类来重写被继承的抽象类的抽象⽅法。
允许分组命名空间的尾部逗号。
对象类型的注释是允许的。
DBA实现了对LMDB后端的⽀持。
JSON在json_encode()和json_decode()增加了对JSON_INVALID_IGNORE和JSON_INVALTD_UTF8_SUBSTITUTE的⽀持,取代了之前的utf-8编码的⽆效类型。
OCI8增加了Oracle数据库的透明应⽤故障切换(TAF)的⽀持。
PCRE增加了内部选项(j)修改本地的PCRE_DUPNAMES选项。
Sodium新的加密扩展。
SQLite3实现了写⼊BLOBs。
Standard当使⽤libargon2来编译PHP时,简化的哈希密码的API已更新,⽤来⽀持Argon2。
windows平台⽀持proc_nice()函数。
Zip读/写加密存档,依赖于libzip 1.2.0, 新的⽅法:ZipArchive:: setEncryptionName($ name,$ method [,$ password]); ZipArchive:: setEncryptionIndex($ index,$ method [,$ password]);新的常量:ZipArchive:: EM_NONE ZipArchive::
EM_AES_128 ZipArchive:: EM_AES_192 ZipArchive:: EM_AES_256
从zip流上下⽂接受"密码"。
ZipArchive实现可计数,增加ZipArchive::count()⽅法。
3. SAPI模块变更
4. 废弃的功能
下⾯是将要在php8.0版本中废弃的功能。
Core配置⽂件的磁道错误将被废弃。
__autoload()将被废弃,使⽤spl_autoload_register()来替代。
(unset)将被废弃,此项变化不会影响unset($var)的语⾔结构。
create_function()函数将被废弃,使⽤匿名函数来替代。
each()函数结构将被废弃,使⽤foreach()循环来替代。
Exifread_exif_data()将被废弃,使⽤exif_read_data()来替代。
GDpng2wbmp()和jpeg2wbmp()将被废弃。
GMPgmp_random()将被废弃,使⽤gmp_random_bits()或者()来替代。
IntlINTL_IDNA_VARIANT_2003将被废弃,使⽤INTL_IDNA_VARIANT_UTS46来替代。
Mbstringmbstring.func_overload的配置⽂件将被废弃。
Standard不⽤参数来调⽤parse_str()将被废弃。
⽤字符串参数来调⽤assert()将被废弃,使⽤常规表达式来替代。
5. 变更的函数
Standard当设置为PASSWORD_ARGON2I时,password_hash()可以⽣成Argon2散列。
当使⽤PASSWORD_ARGON2I时,下⾯这些选项可能默认被设置:memory_cost,time_cost。这些选项的默认值是
PASSWORD_ARGON2_DEFAULT_MEMORY_COST。如果没有设置,则默认是PASSWORD_ARGON2_DEFAULT_TIME_COST和PASSWORD_ARGON2_DEFAULT_THREADS。
password_verify()可以验证Argon2散列。
password_get_info()和password_needs_rehash()可以接受Argon2哈希值。
mail()/mb_send_mail()接受数组$extra_header。数组参数是针对RFC 2822进⾏检查的。 数组格式:php $extra_headers = [
'Header-Name' => 'Header value', 'Multiple' => ['One header','Another header'], 'Multiline' = "FirstLine\r\n SecondLine", ];
当传递⼀个⽆效参数时,count()函数将抛出warning警告。
⼤端和⼩端的字节序下,pack()和unpack()⽀持float和double类型。
number_format()函数将确保零值不包含负号。
XMLutf8_encode()和utf8_decode()函数已被作为字符串移⾄标准扩展。
6. 新增的函数
Core增加stream_istty()。
增加sapi_windows_vt100_support()。
DOMDomNodeList实现了Countable,增加了DomNodeList::count()。
DOMNamedNodeMap实现了Countable,增加了DOMNamedNodeMap :: count()。
FTP增加了ftp_append()。
GD增加了imagesetclip()和imagegetclip()。
增加了imageopenpolygon()。
增加了imageresolution()。
增加了imagecreatefrombmp()和imagebmp()。
Hash增加了hash_hmac_algos()。
Mbstring增加了mb_chr()和mb_ord()。
增加了mb_scrub。
OCI8增加了oci_register_taf_callback()和oci_unregister_taf_callback()对Oracle数据库的透明应⽤故障切换(TAF)的⽀持。
Sockets增加了socket_addrinfo_lookup(),socket_addrinfo_connect(),socket_addrinfo_bind()和socket_addrinfo_explain()。
SPL增加了spl_object_id()。
7. 新增的类和接⼝
8. 移除的扩展和SAPI
Mcypt已废弃的mcrypt扩展已被移⾄PECL。
libmcrypt⾃2007年开始就没有维护,不推荐继续使⽤这个扩展。
9. 其他对扩展的变更
EXIF增加了对如下格式的exif标签⽀持:
Samsung,DJI,Panasonic,Sony,Pentax,Minolta,Sigma/Foveon,AGFA,Kyocera,Ricoh & Epson。
exif_read_data()和exif_t humbnail()⽀持第⼀个参数是传递流。
GD移除了--enable-gd-native-ttf配置选项。
imagegd()将truecolor图像存储为真彩⾊图像,替代了之前的转换为调⾊板。
在使⽤系统libgd编译时,mageantialias()也⽀持。
Mbstringmb_check_encoding()接受数组参数,递归检查其键和值。
mb_convert_encoding()接受数组参数,其值的编码可以递归地转换。
PDO_OCI--with-pdo-oci的配置语法将不再Oracle客户端。
pdo_sqlite使⽤sqlite3_prepare_v2()和sqlite3_close_v2()来代替他们之前的函数。
10. 新增全局常量
CorePHP_FLOAT_DIG
PHP_FLOAT_EPSILON
PHP_FLOAT_MIN
PHP_FLOAT_MAX
PHP_OS_FAMILY
FileinfoFILEINFO_EXTENSION
GDIMG_EFFECT_MULTIPLY
IMG_BMP
PCREPREG_UNMATCHED_AS_NULL
Standard:PASSWORD_ARGON2_DEFAULT_MEMORY_COST
PASSWORD_ARGON2_DEFAULT_TIME_COST
PASSWORD_ARGON2_DEFAULT_THREADS
PASSWORD_ARGON2I
11. INI⽂件处理的变更
sql.safe_mode该INI选项已被移除。
realpath_cache_size默认是4096k。
opcache.fast_shutdown该INI选项已经被移除。 fast_shutdown处理的⼀种变型已经被集成到PHP内核,在⽣产环境中将默认开启。
12. Windows⽀持⽀持VT100控制台模式。
13. 其他变更
编译系统autoconf最低⽀持版本是2.64。
相关推荐:
本⽂原创发布php中⽂⽹,转载请注明出处,感谢您的尊重!
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论