PHP 8-এ Union Type ব্যবহার করে, আমরা একটি সিঙ্গল টাইপের বদলে দুই বা ততোধিক টাইপের মান ব্যবহার করতে পারি। একাধিক টাইপ নির্দিষ্ট করতে, ভার্টিক্যাল লাইন (|) ব্যবহার করা হয় সেগুলো জোড়া দিতে।
Union type প্যারামিটার, রিটার্ন টাইপ, এবং প্রোপার্টি সাপোর্ট করে।
সিনট্যাক্স
type1|type2|……|type_n
উদাহরণ ১: Union Type
<?php class Number { private int | float $num; public function getNum(): float | int { return $this->num } public function setNum(float | int): void { $this->num = $num; } } ?>উদাহরণ ২: Union Type ব্যবহার করে 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 অবজেক্টে পাস করা } $number = new Number(); $number->setNumber(5); print_r($number->getNumber()); $number->setNumber(11.54); print_r($number->getNumber()); ?>আউটপুট
511.54
Union Type-এ Nullable Types
PHP 7.1-এ, nullable type কোয়েসচন মার্ক ?type ব্যবহার করা হতো। PHP 8-এ, আমরা nullable types ঘোষণা করতে পারি type|null হিসেবে। উদাহরণ: float|int|null, কিন্তু আমরা এটিকে ?float|int হিসেবে ঘোষণা করতে পারি না।
Nullable Types সিনট্যাক্স
type1|type2|null
আমাদের ?type1|type2 মতো ঘোষণা করা উচিত নয় কারণ এটি একটি অস্পষ্ট ঘোষণা হবে।
কম্পাইল-টাইম এরর চেকিং − PHP-এ, একটি টাইপ ডিক্লেরেশনে ডুপ্লিকেট বা রিডান্ডান্ট টাইপ অনুমোদিত নয়। এই চেক কম্পাইল-টাইমে হয় অটোলোডিং ক্লাস/ইন্টারফেস ছাড়া।
ডুপ্লিকেট টাইপ অনুমোদিত নয় − আমরা PHP-এ ডুপ্লিকেট ঘোষণা করতে পারি না যেমন int|int এবং int|?intও অনুমোদিত নয়। কারণ এটি সিনট্যাক্স এরর রিটার্ন করবে। "Fatal error: Duplicate type… is redundant in …on line."
void টাইপ অনুমোদিত নয় − PHP 8-এ, union type void অন্য কোনো টাইপের সাথে কম্বাইন করার অনুমতি নেই।
উদাহরণ
Function foo(): void|null{}PHP 8-এ False Type
False type PHP 8-এ Union type-এর একটি অংশ। অধিকাংশ সময় আমরা একটি রিটার্ন ভ্যালুর অনুপস্থিতি বা এরর দেখানোর জন্য null রিটার্ন ভ্যালু হিসেবে ব্যবহার করি। উদাহরণ: ধরি আমাদের একটি ক্লাস মেথড আছে যা স্টুডেন্ট আইডি দিয়ে স্টুডেন্ট খুঁজে বের করে। যদি Student ID উপস্থিত না থাকে, তবে এটি null দিয়ে দেখাতে পারে যে Student ID উপস্থিত ছিল না। কিন্তু PHP false ব্যবহার করে যদি Student ID না পাওয়া যায়।
False type null type-এর বদলে যেকোনো ব্যর্থতার জন্য ব্যবহৃত হয়।
আমরা falseকে একটি স্ট্যান্ডঅ্যালোন টাইপ হিসেবে ব্যবহার করতে পারি না এবং nullable স্ট্যান্ডঅ্যালোন টাইপও অনুমোদিত নয়। অর্থাৎ, আমরা false, false|null, এবং ?false ব্যবহার করতে পারি না।
আমরা false ব্যবহার করতে পারি যেকোনো জায়গায় যেখানে টাইপ приняয় করা হয় যেমন প্যারামিটার, প্রোপার্টি, এবং রিটার্ন ভ্যালু।
इसका कोई true लिटरल टाइप নেই, বরং আমরা শুধু bool টাইপ ব্যবহার করতে পারি।
উদাহরণ
<?php Class Student { public function find(int $id): User|false { // ... } } ?>