美文网首页
php 7.4 特性速递

php 7.4 特性速递

作者: 蜗牛淋雨 | 来源:发表于2019-03-28 18:03 被阅读0次

    PHP 7.4可能会在2019年12月的时候就要发布了,让我们先看一下PHP 7.4新增了哪些内容吧!

    预加载

    预加载机制的实现,在一定程度上极大的提升了PHP的性能。与传统的PHP框架或者项目不同的是:预加载机制的实现使得我们可以在服务启动的时候,把PHP文件加载到内存中,为后续的请求提供服务;而不像传统的方式,每次请求都要重新加载和编译文件。

    预加载机制在一定程度上提升了PHP的性能,不过这种性能的提升不是无偿的,需要占用机器内存和一些损耗作为补偿。值得注意的是,每次更新完PHP源码文件,必须重启服务才可以使得更新后的源码生效。

    属性类型的限定

    php 7.4的这个特性有点儿像静态语言的类型限制,在定义类属性的时候,你可以限制属性是stringbool 或者一个类的实例等:

    class A
    {
        public string $name;
        public Foo $foo;
        public bool $flag;
    }
    

    类型限定

    PHP在之前的版本就已经支持类型限定了,只不过php7.4及其以后的版本,在这方面会做的更好。先来看个例子:

    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)
        { /* … */ }
    }
    

    相信接触过laravel或者熟悉Ioc的同学对这方面肯定不陌生。

    外部函数接口

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

    null三元操作符

    现在是这样使用:

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

    以后你就可以这么用了:

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

    自定义序列化(Custom object serialization )

    在 PHP 7.4 的时候,增加了 __serialize 和 __unserialize 这两个魔术方法,你可以用来自定义对象的序列化。

    弃用ext/wwdx

    这种数据交换格式从未被标准化,所以它们将被弃用。

    相关文章

      网友评论

          本文标题:php 7.4 特性速递

          本文链接:https://www.haomeiwen.com/subject/zmaqbqtx.html