class Point {公众持股$ x;公众持股量$ y;公众持股量$ z; public function __construct(float $ x = 0.0,float $ y = 0.0,float $ z = 0.0,){$ this-> x = $ x; $ this-> y = $ y; $ this-> z = $ z; }}
类Point {公共函数__construct(public float $ x = 0.0,public float $ y = 0.0,public float $ z = 0.0,){}}
类编号{/ ** @var int | float * / private $ number; / ** * @param float | int $ number * /公用功能__construct($ number){$ this-> number = $ number; }}新数字('NaN'); // 好
可以使用在运行时验证的本机联合类型声明来代替类型组合的PHPDoc注释。
开关(8.0){案例'8.0':$ result =“哦,不!” ;打破;情况8.0:$ result =“这是我所期望的”;打破; } echo $ result; //>哦,不!
回声匹配(8.0){‘8.0'=>“哦,不!” ,8.0 =>“这就是我的期望”,}; //>这就是我所期望的
Match是一个表达式,表示其结果可以存储在变量中或返回。
$ country = null;如果($ session!== null){$ user = $ session-> user; if($ user!== null){$ address = $ user-> getAddress(); if($ address!== null){$ country = $ address-> country; }}}
现在,您可以使用带有新的nullsafe运算符的调用链来代替空检查条件。当对链中一个元素的求值失败时,整个链的执行将中止,并且整个链的求值为空。
与数字字符串进行比较时,PHP 8使用数字比较。否则,它将数字转换为字符串并使用字符串比较。
strlen([]); //警告:strlen()期望参数1为字符串,给定array_chunk([],-1); //警告:array_chunk():大小参数应大于0
strlen([]); // TypeError:strlen():参数#1($ str)必须为string类型,给定array_chunk([],-1); // ValueError:array_chunk():参数2($ length)必须大于0
现在,如果参数验证失败,大多数内部函数将引发致命错误异常。
PHP 8引入了两个JIT编译引擎。跟踪JIT是两者中最有前途的,它在综合基准测试中的性能提高了大约3倍,在某些特定的长期运行的应用程序中提高了1.5–2倍。典型的应用程序性能与PHP 7.4相当。
有关PHP 8的源代码下载,请访问下载页面。 Windows二进制文件可以在Windows的PHP网站上找到。更改列表记录在ChangeLog中。
PHP手册中提供了迁移指南。请查阅它以获取新功能和向后不兼容的更改的详细列表。