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);
我是温新
每天进步一点,就一点点
请登录后再评论