PHP 8 Tipos de unión

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

Publicación traducida automáticamente

Artículo escrito por atul07 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *