PHP: 新特性 |
您所在的位置:网站首页 › php7的新特性 › PHP: 新特性 |
新特性
PHP 核心中的新特性
命名参数
新增命名参数的功能。 注解(Attributes)新增注解的功能。 构造器属性提升(Constructor Property Promotion)新增对构造器属性提升(在构造函数中声明类的属性)的支持。 联合类型新增联合类型。 match 表达式新增 match 表达式。 Nullsafe 运算符新增 Nullsafe 运算符(?->)。 其他新特性新增 WeakMap 类。 新增 ValueError 类。 现在,只要类型兼容,任意数量的函数参数都可以用一个可变参数替换。例如允许编写下面的代码:
static(“后期静态绑定”中)可以作为返回类型:
现在可以通过 $object::class 获取类名,返回的结果和 get_class($object) 一致。 new、instanceof 可用于任何表达式,用法为 new (expression)(...$args) 和 $obj instanceof (expression)。 添加对一些变量语法一致性的修复,例如现在能够编写 Foo::BAR::$baz。 添加 Stringable interface,当类定义 __toString() 方法后会自动实现该接口。 Trait 可以定义私有抽象方法(abstract private method)。类必须实现 trait 定义的该方法。 可作为表达式使用 throw。使得可以编写以下用法: 新增 get_resource_id(),返回值跟 (int) $resource 相同。其在更清晰的 API 下提供了相同的功能。 新增 InternalIterator。 日期和时间新增 DateTime::createFromInterface() 和 DateTimeImmutable::createFromInterface()。 新增 DateTime 格式化标识符 p,跟 P 相同,但对于 UTC 返回 Z 而不是 +00:00。 DOM新增新遍历和操作 API:DOMParentNode 和 DOMChildNode。 Filter新增 FILTER_VALIDATE_BOOL,是 FILTER_VALIDATE_BOOLEAN 的别名。首选新名称,因为其使用规范类型名称。 Enchant新增 enchant_dict_add()、enchant_dict_is_added() 和 LIBENCHANT_VERSION。 FPM新增新选项 pm.status_listen,允许从不同的端点(例如端口或者 UDS 文件)获取状态。这对于所有的子进程忙于处理长时间运行的请求时获取状态特别有用。 HashHashContext 对象现在可序列化。 国际化函数新增 IntlDateFormatter::RELATIVE_FULL、IntlDateFormatter::RELATIVE_LONG、IntlDateFormatter::RELATIVE_MEDIUM 和 IntlDateFormatter::RELATIVE_SHORT 常量。 LDAP新增 ldap_count_references(),返回搜索结果中引用消息的数量。 OPcache如果启用了 opcache.record_warnings ini 设置,OPcache 将在编译时记录警告并在下一次包含时重放,即使是从缓存中提供的。 OpenSSL新增由加密、解密、签名、验证和读取功能组成的加密消息语法(CMS)(» RFC 5652)支持。该 API 类似于 PKCS #7 函数的 API,但增加了新的编码常量 OPENSSL_ENCODING_DER、OPENSSL_ENCODING_SMIME 和 OPENSSL_ENCODING_PEM: openssl_cms_encrypt() 使用证书加密文件中的消息并将结果输出到提供的文件。 openssl_cms_decrypt() 解密文件中的 S/MIME 消息并将结果输出到提供的文件。 openssl_cms_read() 将 CMS 文件导出到 PEM 证书数组。 openssl_cms_sign() 使用证书和密钥对文件中的 MIME 消息进行签名,并将结果输出到提供的文件。 openssl_cms_verify() 用于验证数据块是否完好无损,签名者是否是声称的那个人,然后返回签名者的证书。 正则表达式(兼容 Perl)新增 preg_last_error_msg(),返回最后一条人可读的 PCRE 错误消息。它是对 preg_last_error()(返回整数枚举值)的补充。 反射下列方法现在返回内部函数参数默认值的相关信息: ReflectionParameter::isDefaultValueAvailable() ReflectionParameter::getDefaultValue() ReflectionParameter::isDefaultValueConstant() ReflectionParameter::getDefaultValueConstantName() SQLite3 新增 SQLite3::setAuthorizer() 和相应类常量,用于设置用户定义的回调函数,该函数将用于数据库的授权或拒绝操作。 标准库新增 str_contains()、str_starts_with() 和 str_ends_with(),分别检查 haystack 是否包含 needle 或以 needle 开头/结尾。 新增 fdiv() 在 IEEE 754 语义下执行浮点除法。认为除以零已经明确定义,将返回 Inf、-Inf 或 NaN。 新增 get_debug_type() 返回对错误消息有用的类型。与 gettype() 不同的是,它使用规范的类型名称,为对象返回类名,为资源表示资源类型。 printf() 和相关函数现在支持 %h 和 %H 格式说明符。它们与 %g 和 %G 相同,但始终使用 "." 作为小数点分隔符,而不是通过 LC_NUMERIC 区域确定。 现在,printf() 和相关函数支持使用 "*" 作为宽度或精度,此时宽度/精度将作为参数传递给 printf。这也允许在 %g、%G、%h 和 %H 中使用精度 -1。例如,以下代码可用于重现 PHP 的默认浮点数格式化:
现在,proc_open() 支持伪终端(PTY)描述符。以下将 stdin、stdout 和 stderr 附加到同一个 PTY:
proc_open() 现在支持套接字对描述符。以下将独立的套接字对附加到 stdin、stdout 和 stderr:
与管道不同,套接字在 Windows 上不会出现阻塞 I/O 问题。然而,并非所有程序都能正确地与 stdio 套接字配合工作。 排序函数现在已稳定,这意味着相等的元素比较将保留其原始顺序。 array_diff() 和 array_intersect() 及其变体现在可以接受单个数组作为参数。这意味着现在可以使用下列用法:
ob_implicit_flush() 的 flag 参数已经从接受 int 变更为接受 bool。 TokenizerPhpToken 为分词器(tokenizer)新增基于对象的接口。表现更为统一且符合人体工程学,同时内存效率更高、速度更快。 ZipZip 扩展更新到版本 1.19.1。 新的 ZipArchive::setMtimeName() 和 ZipArchive::setMtimeIndex() 设置条目的修改时间。 新的 ZipArchive::registerProgressCallback() 提供在关闭归档期间更新。 新的 ZipArchive::registerCancelCallback() 允许在归档关闭期间取消。 新的 ZipArchive::replaceFile() 替换条目内容。 新的 ZipArchive::isCompressionMethodSupported() 检查可选的压缩功能。 新的 ZipArchive::isEncryptionMethodSupported() 检查可选的加密功能。 新增 ZipArchive::lastId 属性,用于获取最后新增实体的索引值。 现在使用 ZipArchive::status 和 ZipArchive::statusSys 属性或者 ZipArchive::getStatusString() 方法可以在归档关闭后检查错误。 ZipArchive::addGlob() 和 ZipArchive::addPattern() 的 'remove_path' 选项现在视为任意字符串前缀(为了跟 'add_path' 选项保持一致),之前视为目录名称。 可选的压缩/加密功能现在在 phpinfo 中列出。 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |