PHP新语法
持续更新php > 7
新出语法
?:
简化三元运算符
echo $x ? $x : $y; echo $x ?: $y;
??
判断一个变量是a否存在,存在则赋值变量a,不存在赋值变量b
注意是判断一个变量是否存在,而不是判断一个变量是否为空
isset三元运算符
$a = $a ?? 1; var_dump($a); // 1 $a = 5; $a = $a ?? 1; var_dump($a); // 5 $a = 0; $a = $a ?? 1; var_dump($a); // 0
??=
等同于
$a ??= 'dd'; $a = $a ?? 'dd';
match
比swtich简洁
$a = match ($device) { 'android' => 1, 'ios' => 2, 'touch' => 3, 'pc' => 4, default => 0, };
参数无序
class Person { public static function test($name, $age) { echo $name.'|'.$age; } } Person::test(age:100, name:'Landy'); // ----------- function test($name, $age='18', $sex='男') { echo $name . '-------' . $age . '--------'. $sex; } test('Landy', age: 20, sex: '女'); //Landy-------20--------女 test('Landy', sex: '女'); //Landy-------18--------女
构造方法定义属性
class Point { public function __construct( public float $x = 1.0, public float $y = 2.0, public float $z = 3.0, ) {} } echo (new Point())->x; // 1
fn 箭头函数
fn(arguments) => expression to be returned;
// This only works in PHP 7.4 and above $str = "Hello World"; $my_function = fn($a) => $str . $a; echo $my_function("!");