PHP5からPHP7までの新機能の概要

短いタグの使用

//短标签的使用,echo时使用,一般是是视图模板中使用.以下两种写法相同
$name = '张三';
<?=$name?>
<?php echo $name; ?>

php5.3の後に三項演算子の省略形が追加されました

$page = '';
$page = $page ? $page : 1;
echo $page; //1
$page = $page ?: 1;
echo $page; //1

匿名関数を介してコールバックphp5.3の後に追加されました

//例如数组中每个单元值修改
function test($arr, $callback){
    
    
    foreach ($arr as $k => $v) {
    
    
        $arr[$k] = $callback($v);
    }
    return $arr;
}
$arr = [1,2,3];
$array = test($arr,function ($v){
    
    
    return $v+1;
});
print_r($array); //[2,3,4]

//配列宣言、角かっこを使用、php5.4の後に追加

$arr = array(1,2,3);
$arr = [1,2,3];

//関数出力配列、php5.4で追加

$arr = array(1,2,3);
$arr = [1,2,3];

//オブジェクトの直接呼び出し

class Dog {
    
    
    public function bark() {
    
    
        echo 'ww';
    }
}
$dog = new Dog();
$dog->bark(); //ww
(new Dog())->bark(); //ww

特性抽出の使用は、クラスphp5.5を宣言した後に実際に追加されます

trait Cat {
    
    
    public function eat() {
    
    
        echo '吃';
    }
}

trait Bird {
    
    
    public function fly()
    {
    
    
        echo '飞';
    }
}

class SuperMan {
    
    
    use Cat, Bird;
}

(new SuperMan())->eat();//吃
(new SuperMan())->fly();//飞

//空の関数

$a = 3;
echo empty($a-3); //5.5之前会报错,不能判断表达式

//キーワードの歩留まりはphp5.5以降増加しました

//yield不会将单个数据追加到数组,而是没生成一个数据,函数就循环输出一个
function getAll() {
    
    
    for ($i = 0; $i < 5; $i++) {
    
    
        yield $i;
    }
}

foreach (getAll() as $k => $v) {
    
    
    echo $v;
}

//定数定義php5.6constはクラス定数を定義するためにのみ使用され、php5.6以降はクラス外で使用でき、配列を定義できます

const A = [1,2,3];
echo A[1];//2

//php5.6の後に不定のパラメータが追加されます

function test2 ($a, ...$b) {
    
    
    print_r($b);
}
test2(1,2,3,4,5); //输出为数组 [2,3,4,5]
//帮函数拆分参数
function test3($a,$b,$c) {
    
    
    echo $a;
    echo $b;
    echo $c;
}
$argc = [2,3];
test3(1, ...$argc); //1,2,3

//三項演算子の機能がphp7に新しく追加されました

$page = isset($_GET['page']) ? $_GET['page'] : 1;
echo $page; //1
echo $_GET['page'] ?? 1; //1

//強い型のサポート、型の制約、渡されるパラメーターの型が制約され、戻り値の型が制約されます

function test4(int $a, int $b) :int {
    
    
    return $a + $b;
}

echo test4(4,7); //如果参数传递的是个字符串,将会直接报错

//匿名クラスの使用

echo (new class{
    
    
    public $name = '张三';
})->name; //张三

おすすめ

転載: blog.csdn.net/qq_41526316/article/details/108448931