PHP 8 中的联合类型
在PHP8中使用联合类型,我们可以使用两种或多种类型的值,而不是使用单一类型。要指定多种类型,使用竖线(|)将它们连接起来。
联合类型支持参数、返回类型和属性。
语法
type1|type2|……|type_n
示例1:联合类型
num } public function setNum(float | int): void { $this->num = $num; } } ?>
示例2:使用联合类型的PHP8程序
number = $number; } public function getNumber(): int|float { return $this->number; } #passing floats or integer values to the number object } $number = new Number(); $number->setNumber(5); print_r($number->getNumber()); $number->setNumber(11.54); print_r($number->getNumber()); ?>输出结果
511.54
联合类型中的可空类型
在PHP7.1中,可空类型与问号?type一起使用。在PHP8中,我们可以将可空类型声明为type|null。例如:float|int|null,但我们不能将其声明为?float|int。
可空类型语法
type1|type2|null
我们不应该像?type1|type2那样声明,因为这将是一个模棱两可的声明。
编译时错误检查-在PHP中,类型声明中不允许联合类型重复或冗余类型。此检查将在编译时进行,不会自动加载类/接口。
不允许重复类型 -我们不能在PHP中声明重复项,如int|int,也不允许int|?int。因为它会返回一个语法错误。“致命错误:重复类型……在……在线中是多余的。”
voidtypeisnotallowed-在PHP8中,联合类型void不允许与任何其他类型组合。
例子
Function foo(): void|null{}
PHP8中的错误类型
False类型是PHP8中Union类型的一部分。大多数情况下我们使用null作为返回值来表示没有返回值或错误。例如:假设我们有一个通过学生ID查找学生的类方法。如果学生ID不存在,它可能会给出null以表明学生ID不存在。但是如果找不到学生ID,PHP会使用false。
False类型用于任何失败,而不是null类型。
我们不能使用false作为独立类型,也不允许可空的独立类型。这意味着,我们不能使用false、false|null和?false。
我们可以在接受类型(如参数、属性和返回值)的任何地方使用false。
它没有真正的文字类型,我们只能使用bool类型。