Un «tipo de unión» acepta valores de múltiples tipos de datos diferentes, en lugar de uno solo. Si el lenguaje de programación admite tipos de unión, puede declarar una variable en varios tipos. Por ejemplo, puede haber una función que pueda aceptar la variable de tipo «string» o «flotante» como parámetro. PHP ya admite dos tipos de unión especiales.
- Tipo o nulo, utilizando la sintaxis especial «?Tipo».
- Array o Traversable, utilizando el tipo iterable especial.
Pero antes de la actualización, el lenguaje no admitía los tipos de unión arbitrarios. En cambio, usamos anotaciones de PHPDoc, lo cual fue bastante trabajo.
Ejemplo 1:
PHP
<?php class GFG { /** * @var int|float $CodingScore */ private $CodingScore; /** * @param int|float $CodingScore */ public function setScore($CodingScore) { $this->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(); ?>
Producción:
120.5 100
Pero después de esta actualización, los tipos de Unión se especifican usando la siguiente sintaxis
T1|T2|...
Se puede usar en todas las posiciones donde los tipos se aceptan actualmente de la siguiente manera.
Ejemplo 2:
PHP
<?php class GFG { private int|float $CodingScore; // Union type public function setScore(int|float $CodingScore): void { $this->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(); ?>
Producción:
120.8 100