PHP 7 স্কেলার টাইপ ঘোষণা এবং রিটার্ন টাইপ ঘোষণা -
- দুর্বল প্রকার ইঙ্গিত
- কঠোর ধরনের ইঙ্গিত
দুর্বল প্রকার ইঙ্গিত
ডিফল্টরূপে, PHP 7 দুর্বল টাইপ চেকিং মোডে কাজ করে৷ দুর্বল টাইপ চেকিং কোনও ত্রুটি বা মারাত্মক ত্রুটি দেবে না৷ যখন একটি টাইপ ঘোষণার অমিল ঘটে তখন এটি কোনও ত্রুটি না ফেলেই কোডটি কার্যকর করবে৷
strict_typesdeclare(), ব্যবহার করে আমরা দুর্বল টাইপ চেকিং নিয়ন্ত্রণ করতে পারি।
declare(strict_types=0); //weak type-checking; we should set the strict value = 0সেট করা উচিত
দুর্বল প্রকার ইঙ্গিত উদাহরণ 1
<?php
$x=10; // integer variable x =10 value
$y=20.20; // using floating point number y=20.20 value
function add(int $x, int $y){
return $x + $y;
}
echo add($x, $y);
?> আউটপুট
কোডটি নিম্নলিখিত আউটপুট তৈরি করবে −
30
ব্যাখ্যা
উপরের উদাহরণে, আমরা একটি প্যারামিটারের জন্য একটি কঠোর মান ব্যবহার করছি না। আমরা দুটি পূর্ণসংখ্যা ভেরিয়েবল, x, এবং y ব্যবহার করেছি। x=10 এবং y এর জন্য ভাসমান সংখ্যা 20.20 ব্যবহার করছে, কিন্তু y কোনো ত্রুটি তৈরি করবে না; এটি কেবল আউটপুট পূর্ণসংখ্যার মান 30 দেবে।
উদাহরণ 2
<?php
function returnadd(int ...$integers){
return array_sum($integers);
}
var_dump(returnadd(2, '3', 4.1));
?> আউটপুট
উপরের প্রোগ্রামের আউটপুট হবে −
int(9)
কঠোর ধরনের ইঙ্গিত
টাইপ ঘোষণার অমিল হলে কঠোর প্রকারের ইঙ্গিত একটি মারাত্মক ত্রুটি দেবে। আমরা বলতে পারি যে কঠোর প্রকারের ইঙ্গিত টাইপ ঘোষণার সঠিক প্রকারের একটি পরিবর্তনশীল গ্রহণ করে, অন্যথায় এটি TypeError অমিল ফেলে দেবে।
কঠোর টাইপের ইঙ্গিতে, একটি ফাইলের প্রথম বিবৃতিটি অবশ্যই ঘোষণা করতে হবে (strict_types=1), অন্যথায়, এটি একটি কম্পাইলার ত্রুটি তৈরি করবে। এটি অন্যান্য অন্তর্ভুক্ত ফাইলগুলিকে প্রভাবিত করে না যেগুলি ফাইলগুলিতে নির্দিষ্ট করা নেই, যার মানে এটি শুধুমাত্র ব্যবহৃত নির্দিষ্ট ফাইলটিকে প্রভাবিত করে৷
কঠোর ধরনের ইঙ্গিত নির্দেশিকা সম্পূর্ণরূপে কম্পাইল-টাইম এবং রানটাইমে নিয়ন্ত্রণ করা যায় না।
কঠোর প্রকার ইঙ্গিত উদাহরণ 1
<?php
declare (strict_types=1);
function returnadd(float $x , float $y){
return $x+$y;
}
var_dump(returnadd(3.1,2.1)); //output float(5.2)
var_dump(returnadd(3, "2 days")); //fatal error
?> আউটপুট
উপরের কঠোর ধরনের ইঙ্গিত প্রোগ্রাম হবে −
float(5.2)
Fatal error: Uncaught TypeError: Argument 2 passed to returnadd() must be of the type float, string given, called in C:\xampp\htdocs\gud.php on line 7 and defined in C:\xampp\htdocs\gud.php:3 Stack trace: #0 C:\xampp\htdocs\gud.php(7): returnadd(3, '2 days') #1 {main} thrown in C:\xampp\htdocs\gud.php on line 3 কঠোর প্রকার ইঙ্গিত উদাহরণ 2
<?php
declare(strict_types=1); // strict mode checking
$x='1'; // string
$y=20; //integer number
function add(int $x, int $y){
return $x + $y;
}
var_dump(add($x, $y));
?> এটি "মারাত্মক ত্রুটি" আউটপুট তৈরি করবে৷
উপরের কঠোর টাইপ ঘোষণার উদাহরণে, যদি আমরা strict_type মান 1 ঘোষণা করি, কোডটি আউটপুট দেবে "মারাত্মক ত্রুটি:ধরা না পড়া TypeError:যুক্ত করার জন্য 1 পাস করা আর্গুমেন্ট অবশ্যই int-এর হতে হবে। , একটি স্ট্রিং দেওয়া হয়”।