• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    PHP 8新特性简介

    PHP 8新特性

    新的主要PHP版本PHP 8预计将于2020年底发布。它现在处于非常活跃的开发阶段,所以在接下来的几个月里,事情可能会发生很大的变化。

    在这篇文章中,我将持续更新预期的内容列表:新特性、性能改进和重大变化。因为PHP 8是一个新的主版本,所以您的代码被破坏的几率更高。如果你一直在更新最新的版本,升级应该不会太困难,因为大多数有破坏性的更改在7之前就已经废弃了。*版本。

    除了中断更改之外,PHP 8还带来了一些不错的新特性,比如JIT编译器和union类型;还有更多!

    Union types:联合类型

    考虑到PHP的动态类型化特性,在很多情况下联合类型是有用的。联合类型是两个或多个类型的集合,这些类型表示其中一个可以使用。

    public function foo(Foo|Bar $input): int|float;

    注意,void永远不能是union类型的一部分,因为它表示“根本没有返回值”。此外,可以使用|null来编写可为空的联合,也可以使用现有的?符号:

    public function foo(Foo|null $foo): void;
    
    public function bar(?Bar $bar): void;

    JIT

    即时编译器承诺显著的性能改进,尽管并不总是在web请求的上下文中。目前还没有任何准确的基准,但它们肯定会到来。

    Static return type:静态的返回类型

    虽然已经可以返回self,但静态类型直到PHP 8才成为有效的返回类型。考虑到PHP的动态类型特性,这一特性对许多开发人员都很有用。

    class Foo
    {
      public function test(): static
      {
        return new static();
      }
    }

    Weak maps

    在PHP 7.4中添加的weakrefs RFC的基础上,在PHP 8中添加了WeakMap实现。弱映射包含对对象的引用,这并不会阻止那些对象被垃圾收集。

    以orm为例,它们通常实现保存对实体类的引用的缓存,以改进实体之间关系的性能。这些实体对象不能被垃圾回收,只要这个缓存有一个对它们的引用,即使缓存是唯一引用它们的东西。

    如果这个缓存层使用弱引用和映射,那么PHP将在没有其他对象引用它们时对这些对象进行垃圾收集。尤其是orm,它可以在一个请求中管理数百个(如果不是数千个)实体;弱映射为处理这些对象提供了一种更好的、对资源更友好的方法。

    下面是弱映射的样子,一个来自RFC的例子:

    class Foo 
    {
      private WeakMap $cache;
    
      public function getSomethingWithCaching(object $obj): object
      {
        return $this->cache[$obj]
          ??= $this->computeSomethingExpensive($obj);
      }
    }

    ::class on objects

    一个小而有用的新特性:现在可以在对象上使用::class,而不必在对象上使用get_class()。它的工作方式与get_class()相同。

    $foo = new Foo();
    
    var_dump($foo::class);

    Stringable interface

    Stringable接口可用于键入提示任何字符串或实现了 tostring()的内容。而且,无论何时类实现了 tostring(),它都会在后台自动实现接口,不需要手动实现。

    class Foo
    {
      public function __toString(): string
      {
        return 'foo';
      }
    }
    
    function bar(Stringable $stringable) { /* … */ }
    
    bar(new Foo());
    bar('abc');

    从接口创建DateTime对象

    您已经可以使用DateTime:: createfromimmutabledatetime ($immutableDateTime)从一个datetime对象创建一个DateTime对象,但是另一种方法比较麻烦。通过添加DateTime::createFromInterface()和datetime::createFromInterface(),现在就有了一种将DateTime和datetime对象相互转换的通用方法。

    DateTime::createFromInterface(DateTimeInterface $other);
    
    DateTimeImmutable::createFromInterface(DateTimeInterface $other);

    重新定义引擎的警告

    许多以前只触发警告或通知的错误现在已经转换为正确的错误。以下警告已更改。

    以上就是PHP 8新特性简介的详细内容,更多关于php 8新特性的资料请关注脚本之家其它相关文章!

    您可能感兴趣的文章:
    • 简述PHP7.4 新特性和废弃的功能
    • php7新特性的理解和比较总结
    • PHP5.5新特性之yield理解与用法实例分析
    • php7函数,声明,返回值等新特性介绍
    • PHP新特性之字节码缓存和内置服务器
    • PHP新特性详解之命名空间、性状与生成器
    • PHP7新特性简述
    • php 7新特性之类型申明详解
    • 聊聊 PHP 8 新特性 Attributes
    上一篇:PHP大文件及断点续传下载实现代码
    下一篇:php判断IP地址是否在多个IP段内
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    PHP 8新特性简介 PHP,新特性,新,特性,简介,