加入收藏 | 设为首页 | 会员中心 | 我要投稿 开发网_新乡站长网 (https://www.0373zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

PHP8.0的新特性

发布时间:2022-11-28 12:59:25 所属栏目:PHP教程 来源:
导读:  前言

  随着2020年的PHP开发者峰会结束php开发者,8.X将在11月26发布

  一、JIT

  JIT的新特性,则是将PHP代码转化为传统的机器码,而并非通过zend虚拟机来运行,这大大增加了运行速度。但是缺
  前言
 
  随着2020年的PHP开发者峰会结束php开发者,8.X将在11月26发布
 
  一、JIT
 
  JIT的新特性,则是将PHP代码转化为传统的机器码,而并非通过zend虚拟机来运行,这大大增加了运行速度。但是缺点是向下不兼容。
 
  # JIT 可以通过php.ini中设置
  opcache.jit = on // on 开; off 关
 
  JIT具体的内容可以去看下鸟哥的PHP 8新特性之JIT简介
 
  二、注解
 
  PHP8之前PHP实现注解可以通过php-parser来实现,但现在可以直接通过Reflection 来获取。
 
  /**
  * @param Foo $argument
  * @see https:/xxxxxxxx/xxxx/xxx.html
  */ ? ?
  function dummy($Foo) {}
  # 现在获取这段注解则可以使用
  $ref = new ReflectionFunction("dummy");
  var_dump($ref->getAttributes("See")[0]->getName());
  var_dump($ref->getAttributes("See")[0]->getArguments());
  三、类中的成员变量
 
  在PHP8之前,我们一般会这样定义一个类,首先要设置成员变量,然后在构造或者某一个方法为它赋值。
 
  class User{
   ? ?public $username;
   ? ?public $phone;
   ? ?public $sex;
   ? ?
   ? ?public function __contruct(
   ? ? ? ?$username,$phone,$sex
   ?  ){
   ? ? ? ?$this->username = $username;
   ? ? ? ?$this->phone = $phone;
   ? ? ? ?$this->sex = $sex;
   ?  }
  }
  但是 PHP8上我们可以这样写
 
  class User{
   ? ?public function __contruct(
   ? ? ? ?public string $username = "zhangsan",
   ? ? ? ?public string $phone = "110110";
   ? ? ? ?public string $sex = "男"
   ?  ){}
  }
  四、命名参数
 
  创建函数:
 
  function roule($name,$controller,$model){
   ? ?// ... code
  }
  在调用这个函数时,我们需要顺序输入参数
 
  roule("user/login","UserController","login");
  在PHP8中可以这样
 
  roule(name:"user/login",controller:"UserController",model:"login");
  因为可以需要输入参数名来区分传入的字段,那么在一些函数中,类比中间某项这段需要默认值,那我们就可以跳过这个字段
 
  unction roule($name,$controller="UserController",$model){
   ?  // ... code
  }
  roule(name:"user/login",model:"login");
  当然也可以与传统方式相结合
 
  roule("user/login",model:"login");
  五、联合类型
 
  在PHP7中,我们在强制函数返回类型时是这样做的
 
  function create() : bool
  那么在PHP8中你可以使用多种预测类型
 
  function create() : bool|string
  当然在传参时也可以这样做
 
  function create(bool|string $userId)
 

(编辑:开发网_新乡站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!