PHP 8 में यूनियन टाइप का उपयोग करके, हम एकल प्रकार के बजाय दो या अधिक प्रकारों के मानों का उपयोग कर सकते हैं। कई प्रकारों को निर्दिष्ट करने के लिए, उन्हें जोड़ने के लिए वर्टिकल लाइन (|) का उपयोग किया जाता है।
यूनियन टाइप पैरामीटर्स, रिटर्न टाइप्स, और प्रॉपर्टीज का समर्थन करता है।
सिंटैक्स
type1|type2|...|type_n
उदाहरण 1: यूनियन टाइप
<?php
class Number
{
private int | float $num;
public function getNum(): float | int
{
return $this->num;
}
public function setNum(float | int): void
{
$this->num = $num;
}
} ?>
उदाहरण 2: यूनियन टाइप का उपयोग करके PHP 8 प्रोग्राम
<?php
class Number{
private int|float $number;
public function setNumber(int|float $number): void {
$this->number = $number;
}
public function getNumber(): int|float {
return $this->number;
}
}
$number = new Number();
$number->setNumber(5);
print_r($number->getNumber());
$number->setNumber(11.54);
print_r($number->getNumber());
?>
आउटपुट
5 11.54
यूनियन टाइप में नल करने योग्य प्रकार
PHP 7.1 में, नल करने योग्य प्रकार का उपयोग प्रश्न चिह्न ?type के साथ किया जाता है। PHP 8 में, हम नल करने योग्य प्रकारों को type|null के रूप में घोषित कर सकते हैं। उदाहरण के लिए: float|int|null, लेकिन हम इसे ?float|int के रूप में घोषित नहीं कर सकते।
नल करने योग्य प्रकार सिंटैक्स
type1|type2|null
हमें ?type1|type2 की तरह घोषित नहीं करना चाहिए क्योंकि यह एक अस्पष्ट घोषणा होगी।
कंपाइल-टाइम त्रुटि जांच - PHP में, टाइप घोषणा में डुप्लिकेट या अनावश्यक प्रकारों की अनुमति नहीं है। यह जांच क्लासेस/इंटरफेस को ऑटोलोड किए बिना कंपाइल-टाइम पर होगी।
डुप्लिकेट प्रकार अनुमत नहीं हैं - हम PHP में डुप्लिकेट घोषित नहीं कर सकते जैसे int|int और int|?int भी अनुमत नहीं है। क्योंकि यह सिंटैक्स त्रुटि लौटाएगा। "Fatal error: Duplicate type... is redundant in ... on line."
वॉइड टाइप अनुमत नहीं है - PHP 8 में, यूनियन टाइप वॉइड को किसी अन्य प्रकार के साथ संयोजित करने की अनुमति नहीं है।
उदाहरण
Function foo(): void|null{}
PHP 8 में फाल्स टाइप
फाल्स टाइप PHP 8 में यूनियन टाइप का एक हिस्सा है। ज्यादातर हम रिटर्न मान की अनुपस्थिति या त्रुटि दिखाने के लिए नल का उपयोग रिटर्न मान के रूप में करते हैं। उदाहरण के लिए: मान लीजिए हमारे पास एक क्लास मेथड है जो छात्र ID द्वारा छात्र को ढूंढता है। यदि छात्र ID मौजूद नहीं है, तो यह दिखाने के लिए नल दे सकता है कि छात्र ID मौजूद नहीं था। लेकिन PHP false का उपयोग करता है यदि छात्र ID नहीं मिला।
फाल्स टाइप का उपयोग नल टाइप के बजाय किसी भी विफलता के लिए किया जाता है।
हम फाल्स को स्टैंडअलोन टाइप के रूप में उपयोग नहीं कर सकते और नल करने योग्य स्टैंडअलोन टाइप्स भी अनुमत नहीं हैं। इसका मतलब है, हम फाल्स, फाल्स|null, और ?फाल्स का उपयोग नहीं कर सकते।
हम फाल्स का उपयोग वहां कर सकते हैं जहां टाइप्स स्वीकार किए जाते हैं जैसे पैरामीटर, प्रॉपर्टीज, और रिटर्न मान।
इसका कोई ट्रू लिटरल टाइप नहीं है, इसके बजाय हम केवल बूल टाइप्स का उपयोग कर सकते हैं।
उदाहरण
<?php
Class Student {
public function find(int $id): User|false
{
// ...
}
} ?>