📜  PHP 8 联合类型

📅  最后修改于: 2022-05-13 01:56:20.730000             🧑  作者: Mango

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