PHP 8 में Union Type का उपयोग करके, हम एक ही प्रकार का उपयोग करने के बजाय दो या अधिक प्रकार के मानों का उपयोग कर सकते हैं। अनेक प्रकार निर्दिष्ट करने के लिए, ऊर्ध्वाधर रेखा (|) उनसे जुड़ने के लिए उपयोग किया जाता है।
संघ प्रकार पैरामीटर, वापसी प्रकार और गुणों का समर्थन करता है।
सिंटैक्स
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; } #passing floats or integer values to the number object } $number = new Number(); $number->setNumber(5); print_r($number->getNumber()); $number->setNumber(11.54); print_r($number->getNumber()); ?>
आउटपुट
511.54
संघ प्रकार में अशक्त प्रकार
PHP 7.1 में, प्रश्नवाचक चिह्न ?type . के साथ Nullable type का प्रयोग किया जाता है . PHP 8 में, हम अशक्त प्रकारों को type|null . के रूप में घोषित कर सकते हैं . उदाहरण के लिए:float|int|null , लेकिन हम इसे ?float|int . के रूप में घोषित नहीं कर सकते ।
अशक्त प्रकार सिंटैक्स
type1|type2|null
हमें ?type1|type2 . जैसा घोषित नहीं करना चाहिए क्योंकि यह एक अस्पष्ट घोषणा होगी।
-
संकलन-समय त्रुटि जांच - PHP में, एक प्रकार की घोषणा में यूनियन प्रकार के डुप्लिकेट या निरर्थक प्रकारों की अनुमति नहीं है। यह जांच कंपाइल-टाइम के दौरान बिना ऑटोलोडिंग क्लास/इंटरफेस के होगी।
-
डुप्लिकेट प्रकारों की अनुमति नहीं है - हम PHP में int|int . जैसे डुप्लीकेट घोषित नहीं कर सकते और int|?int . भी अनुमति नहीं है। क्योंकि यह एक सिंटैक्स त्रुटि लौटाएगा। "गंभीर त्रुटि:डुप्लीकेट प्रकार... लाइन में ... बेमानी है।"
-
शून्य प्रकार की अनुमति नहीं है - PHP 8 में, संघ प्रकार शून्य किसी अन्य प्रकार के साथ संयोजन की अनुमति नहीं है।
उदाहरण
Function foo(): void|null{}
PHP 8 में गलत टाइप करें
False type PHP 8 में Union type का एक हिस्सा है। ज्यादातर हम रिटर्न वैल्यू के रूप में null का उपयोग रिटर्न वैल्यू या एरर की अनुपस्थिति को दिखाने के लिए करते हैं। उदाहरण के लिए:मान लीजिए कि हमारे पास एक वर्ग विधि है जो छात्र आईडी द्वारा छात्र को ढूंढती है। यदि छात्र आईडी मौजूद नहीं है, तो यह दिखाने के लिए शून्य हो सकता है कि छात्र आईडी मौजूद नहीं था। लेकिन PHP गलत का उपयोग करती है अगर विद्यार्थी आईडी नहीं मिला।
-
किसी भी विफलता के लिए नल प्रकार के बजाय गलत प्रकार का उपयोग किया जाता है।
-
हम एक स्टैंडअलोन प्रकार के रूप में असत्य का उपयोग नहीं कर सकते हैं और अशक्त स्टैंडअलोन प्रकारों की भी अनुमति नहीं है। इसका मतलब है कि, हम झूठा, झूठा|शून्य, और?झूठा इस्तेमाल नहीं कर सकते।
-
पैरामीटर, प्रॉपर्टीज और रिटर्न वैल्यू जैसे किसी भी प्रकार को स्वीकार किए जाने पर हम गलत का उपयोग कर सकते हैं।
-
इसका कोई वास्तविक शाब्दिक प्रकार नहीं है, इसके बजाय हम केवल बूल प्रकारों का उपयोग कर सकते हैं।
उदाहरण
<?php Class Student { public function find(int $id): User|false { // ... } } ?>