Open In App

PHP 8 Union types

Last Updated : 27 Jul, 2021
Improve
Improve
Like Article
Like
Save
Share
Report

A “union type” accepts values of multiple different data types, rather than a single one. If the programming language supports union types, you can declare a variable in multiple types. For example, there can be a function that can accept the variable of type “string” or “float” as a parameter. PHP already supports two special union types.

  • Type or null, using the special “?Type” syntax.
  • Array or Traversable, using the special iterable type.

But before the update, arbitrary union types were not supported by the language. Instead, we used PHPDoc annotations which was quite a work to do.

Example 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();
  
?>


Output:

120.5
100

 

But after this update, Union types are specified using the following syntax

T1|T2|...

It can be used in all positions where types are currently accepted as follows.

Example 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();
  
?>


Output:

120.8
100


Like Article
Suggest improvement
Share your thoughts in the comments

Similar Reads