结合示例讲解PHP8的新特性

广告:宝塔服务器面板,一键全能部署及管理,送你10850元礼包,点我领取~~~

结合示例讲解PHP8的新特性

本文给大家带来PHP8 新特性解读和示例,希望对需要的朋友有所帮助!

PHP8.0 新特性解读和示例

新增命名参数功能

啥是命名参数?就是 具名 参数,在调用函数的时候,可以指定参数名称,指定参数名称后,参数顺序可以不安装原函数参数顺序传.

例子:

  <?php      /**       * 计算余额方法       * @param $amount 账户金额       * @param $payment 支出金额       * @return $balance = $amount-$payment 余额       */      function balance($amount, $payment)      {          return $amount - $payment;      }      //传统方式调用      balance(100, 20);      //php8 使用命名参数调用      balance(amount: 100, payment: 20);      //也可以换个顺序,这样来      balance(payment: 20, amount: 100);
登录后复制

注解功能

啥是注解?直接上代码,最后在解释

例子:

#[Attribute]class PrintSomeThing{  public function __construct($str = '')  {     echo sprintf("打印字符串 %s \n", $str);  }}#[PrintSomeThing("hello world")]class AnotherThing{}// 使用反射读取住解$reflectionClass = new ReflectionClass(AnotherThing::class);$attributes = $reflectionClass->getAttributes();foreach($attributes as $attribute) {  $attribute->newInstance(); //获取注解实例的时候,会输出 ‘打印字符串 Hello world’}
登录后复制

注解功能个人理解总结,使用注解可以将类定义成一个一个 低解耦,高内聚 的元数据类。在使用的时候通过注解灵活引入,反射注解类实例的时候达到调用的目的。**注解类只有在被实例化的时候才会调用

构造器属性提升

啥意思呢,就是在构造函数中可以声明类属性的修饰词作用域例子:

<?php    // php8之前    class User    {        protected string $name;        protected int $age;        public function __construct(string $name, int $age)        {            $this->name = $name;            $this->age = $age;        }    }    //php8写法,    class User    {        public function __construct(            protected string $name,            protected int $age        ) {}    }
登录后复制

节约了代码量,不用单独声明类属性了。

联合类型

在不确定参数类型的场景下,可以使用.

例子:

    function printSomeThing(string|int $value)    {        var_dump($value);    }
登录后复制

Match表达式

和switch cash差不多,不过是严格===匹配

例子:

<?php$key = 'b';$str = match($key) {    'a' => 'this a',    'c' => 'this c',     0  => 'this 0',    'b' => 'last b',};echo $str;//输出 last b
登录后复制

新增 Nullsafe 运算符

<?php   class User   {       public function __construct(private string $name)       {           //啥也不干       }       public function getName()       {           return $this->name;       }    }    //不实例 User 类,设置为null    $user = null;   echo $user->getName();//php8之前调用,报错   echo $user?->getName();//php8调用,不报错,返回空
登录后复制

简化了 is_null 判断

推荐学习:《PHP视频教程》

以上就是结合示例讲解PHP8的新特性的详细内容,更多请关注9543建站博客其它相关文章!

9543建站博客
一个专注于网站开发、微信开发的技术类纯净博客。
作者头像
admin创始人

肥猫,知名SEO博客站长,14年SEO经验。

上一篇:细说Laravel10新组件:Laravel Pennant
下一篇:设置php数组为空

发表评论

关闭广告
关闭广告