PHP 8 联合类型
“联合类型”接受多种不同数据类型的值,而不是单一的。如果编程语言支持联合类型,你可以声明一个变量为多种类型。例如,可以有一个函数可以接受“字符串”或“float”类型的变量作为参数。 PHP已经支持两种特殊的联合类型。
- 类型或空值,使用特殊的“?Type”语法。
- Array 或 Traversable,使用特殊的可迭代类型。
但在更新之前,该语言不支持任意联合类型。相反,我们使用 PHPDoc 注释,这是一项相当艰巨的工作。
示例 1:
PHP
CodingScore = $CodingScore;
}
/**
* @return int|float
*/
public function getScore() {
return $this->CodingScore;
}
}
$a = new GFG();
$a->setScore(120.5);
echo $a->getScore(), "\r\n" ;
$b = new GFG();
$b->setScore(100);
echo $b->getScore();
?>
PHP
CodingScore = $CodingScore;
}
//Union type
public function getScore(): int|float {
return $this->CodingScore;
}
}
$a = new GFG();
$a->setScore(120.8);
echo $a->getScore(),"\r\n";
$a->setScore(100);
echo $a->getScore();
?>
输出:
120.5
100
但是在这次更新之后,Union 类型是使用以下语法指定的
T1|T2|...
它可以用于当前接受类型的所有位置,如下所示。
示例 2:
PHP
CodingScore = $CodingScore;
}
//Union type
public function getScore(): int|float {
return $this->CodingScore;
}
}
$a = new GFG();
$a->setScore(120.8);
echo $a->getScore(),"\r\n";
$a->setScore(100);
echo $a->getScore();
?>
输出:
120.8
100