PHP Operators
PHP Operators পর্ব -৬ : PHP Ternary, Null Coalescing, PHP Null safe Operator
PHP তে Ternery Operator কি ?
অক্সফোর্ড ইংরেজি অভিধান অনুযায়ী Ternary শব্দের অর্থ হচ্ছে “তিনটি অংশে গঠিত”। নামের মতোই PHP তে Ternary Operator টি হচ্ছে একটি Conditional Operator যা তিনটি অংশে গঠিত , আর তা হচ্ছে: Condition ? Expression 1 : Expression 2. যদি condition true হয় , তাহলে Expression 1 রিটার্ন করবে অন্যথায় Expression 2 রিটার্ন করবে। Ternary Operator টি অনেকটা if….else স্টেটমেন্ট এর মতোই। চলুন নিচের উদাহরণ দুটি দেখা যাক :
উদাহরণ ১: Ternary Operator ছাড়া if…else দিয়ে condition চেক
<?php $age = 19; //input by user if($age > 17){ echo "Yes you are eligible"; }else{ echo "Sorry, not eligible"; } ?>
উদাহরণ ২: Ternary Operator দিয়ে condition চেক
<?php $age=19; echo ($age>17)?"Yes you are eligible":"Sorry, not eligible"; ?>
উদাহরণ ৩: Ternary অপারেটর ছাড়া if…else দিয়ে variable এ Default value assign:
<?php if (empty($_POST['action'])) { $action = 'default'; } else { $action = $_POST['action']; } ?> ?>
উদাহরণ ৪: Ternary অপারেটর দিয়ে variable এ Default value assign:
<?php $action = (empty($_POST['action'])) ? 'default' : $_POST['action']; ?>
PHP তে কি Nested Ternary Operator লেখা যায়:
হ্যাঁ লেখা যায়, তবে Nested Condition এর ক্ষেত্রে if ..elseif..n…else অথবা switch case ব্যবহার করা ই ভালো।
উদাহরণ ৫: Nested if…else :
<?php $bTest1 = false; $bTest2 = false; if ($bTest1) { if ($bTest2) { echo 'test 1 true, test 2 true'; } else { echo 'test 1 true, test 2 false'; } } else { if ($bTest2) { echo 'test 1 false, test 2 true'; } else { echo 'test 1 false, test 2 false'; } } ?>
ব্যাখ্যা :এখানে $bTest1 এর ডিফল্ট value false হওয়াতে, প্রথম if condition কাজ করবেনা এবং প্রোগ্রাম তখন else statement এ চলে যাবে। আবার else statement এ প্রথম if condition টি false হওয়ায় প্রোগ্রাম আবার else statement এ যাবে এবং ফলাফল প্রিন্ট করবে : test 1 false, test 2 false
উপরের কাজটি আমরা nested ternery operator দিয়েও করতে পারি।
উদাহরণ ৬: Nested Ternary Operator:
<?php $bTest1 = false; $bTest2 = false; echo $bTest1?($bTest2?'test 1 true, test 2 true':'test 1 true, test 2 false'):($bTest2?'test 1 false, test 2 true':'test 1 false, test 2 false'); ?>
PHP তে Null Coalescing Operator কি ?
PHP-7 থেকে যেকোনো Null বা ফাঁকা Variable এ নতুন value assign বা মান রাখার জন্য Null Coalescing Operator টি ব্যবহৃত হয়। নিচের উদাহরণ লক্ষ্য করুন :
উদাহরণ ১: Null Coalescing Operator ছাড়া if…else দিয়ে নতুন value assign
<?php if (isset($_POST['action'])) { $action = $_POST['action']; } else { $action = 'default'; } ?>
উদাহরণ ২: Null Coalescing Operator দিয়ে নতুন value assign
<?php // Example usage for: Null Coalesce Operator $action = $_POST['action'] ?? 'default'; ?>
উদাহরণ ৩: Nesting null coalescing operator
<?php $foo = null; $bar = null; $baz = 1; $qux = 2; echo $foo ?? $bar ?? $baz ?? $qux; // outputs 1 ?>
PHP তে Null safe Operator কি ?
PHP Null-safe Operator (?->) হল PHP 8.0-এ প্রবর্তিত একটি ফীচার। এটি একটি error triggering ছাড়া সম্ভাব্য null objects এর properties এবং methods এ অ্যাক্সেস করার প্রক্রিয়া সহজ করার জন্য ডিজাইন করা হয়েছে. প্রতিটি intermediate result null কিনা তা স্পষ্টভাবে পরীক্ষা না করে এই অপারেটর আপনাকে property এবং method কল চেইন করতে দেয়।
null-safe operator প্রবর্তনের আগে, ডেভেলপারদের null value গুলো থেকে রক্ষা করার জন্য conditional checks বা null coalescing operator (??) ব্যবহার করতে হতো, বিশেষ করে যখন object properties এবং methods গুলো নিয়ে কাজ করা হয়। null-safe operator এই প্রক্রিয়াটিকে streamlines করে।
null-safe operator কীভাবে কাজ করে তার একটি সংক্ষিপ্ত ব্যাখ্যা এখানে দেওয়া হল:
Without Null-safe Operator:
<?php class ExampleClass { private $property; public function __construct($property) { $this->property = $property; } public function getProperty() { return $this->property; } } // Create an instance of ExampleClass $object = new ExampleClass("Sample Property"); // Traditional way to handle null checks $result = ($object !== null) ? $object->getProperty() : null; // Display the result echo "Result: " . ($result ?? "null");
With Null-safe Operator:
<?php class ExampleClass { private $property; public function __construct($property) { $this->property = $property; } public function getProperty() { return $this->property; } } // Create an instance of ExampleClass $object = new ExampleClass("Sample Property"); // Using the null-safe operator $result = $object?->getProperty(); // Display the result echo "Result: " . ($result ?? "null");
<?php class Person { public function getName() { return "John Doe"; } } // Create an instance of Person //$person = null; //$person= new Person; // Access the name property using the null-safe operator $personName = $person?->getName(); // Display the result echo "Person's Name: " . ($personName ?? "Unknown");