PHP8.0新特性之Union Types(联合类型)

作者: 温新

分类: 【PHP基础】

阅读: 2911

时间: 2021-12-05 16:00:22

什么是Union Types

简单地说,就是一值在内存中可能有存在多种类型的表示。

Union Types演示

?string

在PHP8中,可以使用?|type来忽略一个为null的值。PHP7中string|null variables的写法已经被放弃,PHP8中使用?|type来表示。

// PHP8写法
function show(?string $name):?string
{
	var_dump($name);
	return $name;
}
show('自如初');
show(null);

// PHP7写法,未进行测试
function show(string|null $name):string|null
{
	var_dump($name);
	return $name;
}
show('自如初');
show(null);

类属性

一个属性既可以string类型,也可以是array类型

class Person
{
	public function __construct(
		public string $name,
		public int $age,
		public string|array $hobbies
	)
	{
		$this->name = $name;
		$this->age  = $age;
		$this->hobbies = $hobbies;
	}
}

$p1 = new Person('自如初', 18, 'PHP');
echo $p1->name;
$p2 = new Person('PHP博客', 18, ['vue','js']);
print_r($p2->hobbies);

我是温新

每天进步一点,就一点点

请登录后再评论