PHP8.0新特性之Union Types(联合类型)
什么是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);
我是温新
每天进步一点,就一点点
请登录后再评论