php8新功能可以干嘛,PHP8.x 你必须知道的这些新特性

前言

Hello 大家好,我是CrazyCodes,距离上次发文已经过去4个月的时间,今年是悲惨的一年,也是奋发的一年,我会发布一些更好更实用的文章与大家分享,谢谢大家一直以来的支持。

本篇是我参加《2020 PHP开发者峰会》 Nikita分享内了解到的一些知识与大家分享Nikita 是PHP8的核心开发者。

PHP8的版本会在今年11月26日与各位开发者见面,敬请期待

JIT

值得被提起的则是JIT新的特性,它会将PHP代码转换为传统的机器码,而并非通过zend虚拟机来运行,这样大大的增加了运行速度,但并不向下兼容,这意味着你不能通过像PHP5升级到PHP7那样获得该特性。

JIT可以通过php.ini去设置,例如这样opcache.jit=on // on 代表打开,则off代表关闭

注解

PHP8版本彻底把注解扶正,当然在这之前像 Symfony,hyperf通过php-parser加入注解的使用方法,但这毕竟不属于PHP8内核真正的部分,在PHP8的版本中,但依旧需要反射new ReflecationProperty(User::class,"id");

去获取到注解部分,看来注解在PHP的历史长河中还是需要继续不断完善的。

类中的成员变量小的知识点

在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");

因为可以需要输入参数名来区分传入的字段,那么在一些函数中,类比中间某项这段需要默认值,那我们就可以跳过这个字段function 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)

并且也可以设置类型NULL和TRUE,FALSE了。

总结

以上是PHP8主要的一些特性,所有表达和案例都是在Nikita的基础上描述的,并没有直接照搬,当然Nikita的演讲并不仅仅只有这些,为了保持对峰会主办方的尊重,还请各位移步至

https://www.itdks.com/Home/Ac...

观看Nikita的完整演讲。

致谢

感谢你看到这里,希望本篇文章对你的技术生涯多一分动力,谢谢!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值