长沙网站建设:PHP 7.4中的新功能

善微科技 2019 02月16日 发布

PHP 7.4可能会在2019年12月的某个地方发布。此页面将同时收到定期更新。最后更新时间是2019年1月14日


预加载rfc

预加载是PHP核心的一个惊人的补充,可以带来一些重大的性能改进。


简而言之:如果您今天使用的是框架,则必须在每次请求时加载和重新编译其文件。预加载允许服务器在启动时在内存中加载PHP文件,并使它们永久可用于所有后续请求。


性能提升当然需要付出代价:如果预加载文件的来源发生变化,则必须重新启动服务器。


输入属性rfc

类变量可以是类型提示:


class A

{

    public string $name;

    

    public Foo $foo;

}

更新07-01:截至目前,已合并类型属性,因此已确认PHP 7.4。


改进的类型方差rfc

我过去曾写过PHP的类型系统,所以很高兴看到一些改进实际上是在PHP的核心。


类型差异是一个值得自己的博客文章的主题; 简而言之:你将能够使用协变返回类型......


class ParentType {}

class ChildType extends ParentType {}


class A

{

    public function covariantReturnTypes(): ParentType

    { /* … */ }

}


class B extends A

{

    public function covariantReturnTypes(): ChildType

    { /* … */ }

}

......和逆变论据。


class A

{

    public function contraVariantArguments(ChildType $type)

    { /* … */ }

}


class B extends A

{

    public function contraVariantArguments(ParentType $type)

    { /* … */ }

}

更新14-01:RFC目前处于投票阶段,但看起来它会毫无问题地通过。



 

外部函数接口rfc

外部函数接口,简称FFI,允许从用户区调用C代码。这意味着PHP扩展可以用纯PHP编写。


应该指出,这是一个复杂的主题。您仍然需要C知识才能正确使用此功能。


空融合赋值运算符rfc

而不是这样做:


$data['date'] = $data['date'] ?? new DateTime();

你可以这样做:


$data['date'] ??= new DateTime();

更新22-01:此功能现在在PHP 7.4中合并。


反思参考rfc

像Symfony的var转储程序这样的库很大程度上依赖于反射API来可靠地转储变量。以前,没有对引用的适当反射支持,导致这些库依赖hack来检测引用。


PHP 7.4添加了ReflectionReference解决此问题的类。


更新02-14:RFC已通过,PHP 7.4已确认更改。


mb_str_split添加了RFC

此函数提供与str_split多字节字符串相同的功能。


ext-hash始终启用rfc

正如标题所说,此扩展现在可在所有PHP安装中永久使用。


PEAR默认情况下未启用EXTERNALS

由于PEAR不再维护,核心团队决定使用PHP 7.4删除其默认安装。


密码哈希注册表RFC

对如何使用散列库进行内部更改,以便用户可以更轻松地使用它们。


弃用ext/wwdx RFC

此数据交换格式从未标准化,现在不推荐使用其扩展名。


向后不兼容的更改升级

升级PHP版本时,您应该始终查看完整的UPGRADING文档。


以下是一些突出显示的向后不兼容的更改:


parent::在没有父级的类中引用将生成编译时错误而不是运行时错误。

调用var_dump一个DateTime或DateTimeImmutable实例将不再保留对象的可访问属性后面。

openssl_random_pseudo_bytes 将在错误情况下抛出异常。

尝试序列化一个PDO或PDOStatement实例将生成一个Exception而不是一个PDOException。

呼叫get_object_vars()上的ArrayObject实例将返回的属性ArrayObject本身,而不是包装的阵列或对象的值。请注意,(array)强制转换不受影响。


如没特殊注明,文章均为善微网络原创,转载请注明来自https://www.sanways.com/news/468.html