美文网首页
php版本特性

php版本特性

作者: 呦丶耍脾气 | 来源:发表于2022-11-23 21:28 被阅读0次

[doc]

一、PHP 7 新特性

1.1标量类型声明

标量类型声明有两种模式: 强制 (默认) 和 严格模式
强制模式:非标量类型自动转换
严格模式:非标量类型报错,declear(strict_types=1);//需要放在首行

function sum (int ...$ints)
{ 
  return array_sum($ints);
}
var_dump(sum([2,'3.1',4]));#9,如果是严格模式,将会报错

1.2 返回值类型声明

function arraysSum(array ...$arrays): array
{
    return array_map(function(array $array): int {
        return array_sum($array);
    }, $arrays);
}

print_r(arraysSum([1,2,3], [4,5,6], [7,8,9])); 

输出:

Array
(
    [0] => 6
    [1] => 15
    [2] => 24
)

1.3 null 合并运算符

由于日常使用中存在大量同时使用三元表达式和 isset()的情况, 我们添加了 null 合并运算符 (??) 这个语法糖。如果变量存在且值不为null, 它就会返回自身的值,否则返回它的第二个操作数。

$username ?? 'nobody';

1.4 <=> 太空船操作符

// 整数
    echo 1 <=> 1; // 0
    echo 1 <=> 5; // -1
    echo 2 <=> 1; // 1

    // 浮点数
    echo 1.5 <=> 1.5; // 0
    echo 1.5 <=> 2.5; // -1
    echo 2.5 <=> 1.5; // 1

    // 字符串
    echo "a" <=> "a"; // 0
    echo "a" <=> "b"; // -1
    echo "b" <=> "a"; // 1

1.5 定义常量数组

define('ANIMALS', ['dog', 'cat','bird']);
echo ANIMALS[1];

1.6 整数除法函数

var_dump(intdiv(10, 3));#3

二、 PHP7.1

2.1 可为空(Nullable)类型

参数以及返回值的类型现在可以通过在类型前加上一个问号使之允许为空。 当启用这个特性时,传入的参数或者函数返回的结果要么是给定的类型,要么是 null 。

function testReturn(): ?string
{
     return null;
 }
var_dump(testReturn());#NULL
function test(?string $name)
{
     return $name;
 }
var_dump(test(null));#NULL

2.2 类常量可见性

class className{
    const PUBLIC_CONST_A = 1;
    public const PUBLIC_CONST_B = 2;
}
var_dump(className::PUBLIC_CONST_A );#1
var_dump(className::PUBLIC_CONST_B);#2

2.3 list替代短语

$data = [
    [1,'tom'],
    [2,'jenry']
];
[$id,$name] = $data[1];#2
var_dump($id);#jenry
var_dump($name);
foreach ($data as [$id,$name]) {
    var_dump($id);#1
    var_dump($name);#tom
    die;
}

2.4 list支持键名

list("id" => $id1, "name" => $name1) = ['id'=>1,'name'=>'tom'];
var_dump($name1);#tim

2.5 支持为负数的字符串偏移量

现在所有支持偏移量的字符串操作函数都支持接受负数作为偏移量,包括通过[]{}操作字符串下标。在这种情况下,一个负数的偏移量会被理解为一个从字符串结尾开始的偏移量。

var_dump("abcdef"[-2]);#e
var_dump(strpos("aabbcc", "b", -3));#3
$string = 'bar';
echo "The last character of '$string' is '$string[-1]'.\n";#The last character of 'bar' is 'r'.

三、 PHP7.2

3.1 允许重写抽象方法(Abstract method)

当一个抽象类继承于另外一个抽象类的时候,继承后的抽象类可以重写被继承的抽象类的抽象方法。

abstract class A
{
    abstract function test(string $s);
}·
abstract class B extends A
{
    abstract function test($s) : int;
}

PHP7.4

4.1 属性添加限定类型

class User {
    public int $id;
    public string $name;
}

4.2 箭头函数 提供了一种更简洁的定义函数的方法。

$factor = 10;
$nums = array_map(fn($n) => $n * $factor, [1, 2, 3, 4]);
// $nums = array(10, 20, 30, 40);

4.3 空合并运算符赋值

$array = ['b'=>2];
$array['key']??=1;
var_dump($array);#array(2) { ["b"]=> int(2) ["key"]=> int(1) }

4.4 数组展开操作

$parts = ['apple', 'pear'];
$fruits = ['banana', 'orange', ...$parts, 'watermelon'];
// ['banana', 'orange', 'apple', 'pear', 'watermelon'];

相关文章

  • php版本特性

    [doc] 一、PHP 7 新特性 1.1标量类型声明 标量类型声明有两种模式: 强制 (默认) 和 严格模式强制...

  • PHP各版本特性

    链接 PHP5.3PHP5.4PHP5.5PHP5.6PHP7.0PHP7.1PHP7.2 PHP 5.3.0 o...

  • PHP各版本特性

    PHP7访问[ http://www.jianshu.com/p/68ff919df337 ]查看 PHP5.6 ...

  • php版本特性学习

    5.6->7.0变更新特性 强制标量声明:文件顶部添加(declare(ticks=1);),变量添加类型声明 返...

  • ThinkPHP 5.0 (一)主要特性 和 命名规范

    一、主要特性 ThinkPHP5.0 版本是一个颠覆和重构版本,采用全新的架构思想,引入了更多的PHP新特性,优化...

  • PHP基础与案例开发详解

    《PHP基础与案例开发详解》本书以目前PHP的较新版本PHP为依托,结合PHP语言特性和实战案例,充分融入了企业开...

  • 2、PHP各版本特性

    源文来自https://github.com/TIGERB/easy-tips,分享给大家 共同进步 PHP 5....

  • PHP 版本新特性总结

    闲来无事,就想着总结一下各个版本特性。然后就有下面的文档 PHP 5.6 新特性 使用表达定义常量 在之前的版本里...

  • PHP 7.4.0 发布

    PHP 7.4.0 发布了,此版本标志着 PHP 7 系列的第四次特性更新。PHP 7.4.0 进行了许多改进,并...

  • PHP版本概述

    PHP 8于2020年11月26日正式发布。 PHP 5.* 版本新特性 5.2.*以前:类型约束,autoloa...

网友评论

      本文标题:php版本特性

      本文链接:https://www.haomeiwen.com/subject/pkqtfdtx.html