php最新稳定版本 php最新版本最多少


php最新稳定版本 php最新版本最多少

文章插图
PHP 团队于2020年11月26日宣布 PHP 8 正式发布!
php8的下载地址:
https://www.php.net/downloads.php
PHP 8.0.0 目前是最新的主要版本 , 它引入了一些重大变更 , 以及许多新特性和性能优化 , PHP 8.0 值得关注的改进包括以下:
1、PHP 8.0 引入了备受期待的 Just In Time (JIT) 编译器 , 能够进一步提高 PHP 脚本的执行速度
2、PHP 8.0 合并了诸多性能优化
3、JSON 支持现在被视为语言的核心部分 , 始终可用 , 而不是作为可选模块
4、支持 named 参数 , 因为它们能够指定参数名称而不是其确切顺序
5、支持类/属性/函数/方法/参数/常量的结构化元数据的属性(或在其他语言中也称为注释或修饰符)
6、支持可以指示多种不同类型的联合类型 , 这些类型可以用作参数或函数的返回类型
7、支持静态返回类型
8、str_contains()函数是一种检查字符串是否包含在另一个字符串中的简便方法 , 而不必使用strpos等 。与之相似的是新的str_starts_with()和str_ends_with()函数
9、添加了Nullsafe运算符 , 作为在方法上应用空合并行为的快速简便的方法
10、相比较 PHP 7.4 稳定版 , PHP 8.0 在性能上大约改进了 10% , 但是至少在某些方面 , JIT 可以提供更多的性能 。
下面我们来看看新特性和性能优化
新增 ValueError 异常
这是8新引入进来的 ValueError 的内置异常类 , 它继承自 Exception 基类 。你每次传递值到函数时候 , 如果检测到是一个无效的类型时抛出该异常 , 在 PHP 8 之前 , 这样的操作会直接做警告处理 。
示例代码:
<?phpdeclare(strict_types=1);/*** 传递数组到 array_rand , 类型正确 , 但是 array_rand 期望传入的是非空数组* 所以会抛出 ValueError 异常*/array_rand([], 0);/*** json_decode 的深度参数必须是有效的正整型值 , * 所以这里也会抛出 ValueError 异常*/json_decode('{}', true, -1);运行结果:
新增对联合类型的支持
8新增的联合类型 , 它允许一个变量拥有多个类型的值 。
示例代码如下:
<?phpdeclare(strict_types=1);/*** 定义一个支持联合类型的 Number 类*/class Number {private int|float $number;public function setNumber(int|float $number): void {$this->number = $number;}public function getNumber(): int|float {return $this->number;}}/*** 我们可以传递浮点型和整型值到 Number 对象*/$number = new Number();$number->setNumber(5);var_dump($number->getNumber());$number->setNumber(11.54);var_dump($number->getNumber());exit;运行结果:
重写方法时允许可变参数
当你在子类重写父类方法时 , 任何数量的参数都可以被替换成可变参数的 , 只要对应参数类型是兼容的就可以 。
示例代码如下
<?phpdeclare(strict_types=1);class A {public function method(int $many, string $parameters, $here) {}}class B extends A {public function method(...$everything) {var_dump($everything);}}$b = new B();$b->method('i can be overwritten!');exit;运行结果:
静态返回类型
8 中可以使用 static 关键字标识某个方法 , 且返回该方法当前所属的类 , 即使它是继承的 , 可用于后期静态绑定 。示例代码如下:
<?phpdeclare(strict_types=1);class Test {public function doWhatever(): static {// Do whatever.return $this;}}exit;新增 WeakMap 特性
WeakMap 允许你创建对象到任意值的映射(这个就类似 SplObjectStorage)的同时也不会阻止作为键的对象被垃圾回收 。要是某个对象键被垃圾回收了 , 对应键值对就会从集合中被移除 。


以上关于本文的内容,仅作参考!温馨提示:如遇健康、疾病相关的问题,请您及时就医或请专业人士给予相关指导!

「四川龙网」www.sichuanlong.com小编还为您精选了以下内容,希望对您有所帮助: