PHP ফাংশন (Functions) PHP টাইপ হিন্টস (Type hints) Estimated reading: 3 minutes 17 views Contributors সারাংশ: এই টিউটোরিয়ালে, আপনি শিখবেন কিভাবে PHP type hints ব্যবহার করে function parameters এবংreturn মানের জন্য types ঘোষণা করতে হয়। PHP টাইপ হিন্টস পরিচিতিঃPHP ডাইনামিকেলি টাইপ ল্যাঙ্গুয়েজ যখন আপনি একটি function ডিফাইন করেন, আপনাকে parameter-এর জন্য টাইপ ঘোষণা করতে হবে না। উদাহরণ স্বরূপ:<?php function add($x, $y) { return $x + $y; } $result = add(1,2); echo $result; // 3 add() ফাংশনটি দুটি আর্গুমেন্ট গ্রহন করে এবং তাদের যোগফল রিটার্ন করে। এই উদাহরণে, আমরা add() ফাংশনে দুটি পূর্ণসংখ্যা পাস করি এবং একটি পূর্ণসংখ্যা হিসাবে রেজাল্ট পাই।আপনি যদি add() ফাংশনে দুটি ফ্লোটিং পয়েন্ট নম্বর পাস করেন, তাহলে আপনি float-এর যোগফল পাবেন, যা একটি ফ্লোটিং পয়েন্ট নম্বর:<?php function add($x, $y) { return $x + $y; } $result = add(1.0,2.5); echo $result; // 3.5আরও মজার বিষয় হল, আপনি add() ফাংশনে একটি পূর্ণসংখ্যা এবং একটি সংখ্যাসূচক স্ট্রিং পাস করতে পারেন, এটি একটি পূর্ণসংখ্যা রিটার্ন করবে:<?php function add($x, $y) { return $x + $y; } $result = add(1,'2'); echo $result; // 3এই ক্ষেত্রে add() ফাংশনটি + অপারেটরের কারণে সাংখ্যিক স্ট্রিং '2' কে পূর্ণসংখ্যা 2-তে জোর আরোপ করে। যদি PHP স্ট্রিং আর্গুমেন্ট -কে পূর্ণসংখ্যা-এ জোর আরোপ করতে ব্যর্থ হয়, তবে এটি একটি error দেখাবে। উদাহরণ স্বরূপঃ<?php function add($x, $y) { return $x + $y; } $result = add('Hi','There'); echo $result;Error:Fatal error: Uncaught TypeError: Unsupported operand types: string + string in ... ফাংশন প্যারামিটার এবং রিটার্ন মানের জন্য type প্রয়োগ করতে আপনি type hints ব্যবহার করতে পারেন।মনে রাখবেন যে, PHP ক্লাস-এর প্রপার্টি এবং type এর জন্য type hints ব্যবহার করার অনুমতি দেয়, যা আপনি PHP object-oriented programming tutorial থেকে শিখবেন।ফাংশন প্যারামিটারের জন্য PHP টাইপ হিন্টস:type hints– নিশ্চিত করে যে, PHP কল এর সময় মানের ধরন পরীক্ষা করবে এবং যদি কোনো মিল নাও থাকে, তাহলে একটি TypeError নিক্ষেপ করবে ৷প্যারামিটার-এ একটি type hint যোগ করতে এটির সামনে একটি type রাখুনঃ<?php function my_function(type $param1, type param2, ...) { // ... }PHP 5-এ, type hints-এর জন্য array, callable এবং class ব্যবহার করতে পারেন। PHP 7+ এ, আপনি bool, float, int এবং string এর মতো স্কেলার টাইপ ব্যবহার করতে পারেন।নিম্নলিখিতটি add() ফাংশন ডিফাইন করে, যা দুটি পূর্ণসংখ্যা গ্রহণ করেঃ<?php function add(int $x, int $y) { return $x + $y; } $result = add(1,2); echo $result; // 3যাইহোক, আপনি যদি দুটি ফ্লোট পাস করেন, তাহলে আপনি একটি পূর্ণসংখ্যা হিসাবে রেজাল্ট পাবেনঃ<?php function add(int $x, int $y) { return $x + $y; } $result = add(1,2.5); echo $result; // 3এই ক্ষেত্রে, PHP যোগফল ক্যালকুলেটিং করার আগে 2.5 কে একটি পূর্ণসংখ্যা (2) তে জোর আরোপ করে। অতএব, ফলাফল একটি পূর্ণসংখ্যাডিফল্টরূপে, PHP সম্ভব হলে প্রত্যাশিত স্কেলার টাইপ ঘোষণা সামঞ্জস্যপূর্ণ টাইপের একটি মান জোর আরোপ করে। টাইপ ঘোষণা এর সাথে মিলে, এমন একটি টাইপ-এর সাথে ভেল্যু প্রয়োগ করতে আপনাকে strict typing ঘোষণা করতে হবে।ফাংশনের রিটার্ন মানের জন্য PHP টাইপ হিন্টস:একটি ফাংশনের জন্য একটি রিটার্ন ভেল্যু-এর টাইপ নির্দিষ্ট করতে ফাংশন হেডার এর পরে এই type-টি যুক্ত করুন:<?php function my_function(type $param1, type $param2, ...) : type { // .. }নিম্নলিখিত উদাহরণ add() ফাংশনকে ডিফাইন করে, যা দুটি পূর্ণসংখ্যা গ্রহণ করে এবং একটি পূর্ণসংখ্যা প্রদান করে:<?php function add(int $x, int $y): int { return $x + $y; } echo add(10, 20);PHP 7.0 থেকে শুরু করে, যদি কোনো ফাংশন কোনো ভেল্যু প্রদান না করে, তাহলে আপনি void টাইপ ব্যবহার করুন। উদাহরণ স্বরূপঃ<?php function dd($data):void { echo '<pre>'; var_dump($data); echo '</pre>'; die; }ইউনিয়ন টাইপ এর ধরনঃPHP 8.0 থেকে শুরু করে, যদি একটি ফাংশন বিভিন্ন ধরণের ভেল্যু রিটার্ন করে, আপনি এটিকে একটি union type হিসাবে ঘোষণা করতে পারেন। উদাহরণ স্বরূপঃ<?php function add($x, $y): int | float { return $x * $y; } echo add(10, 20); // 200 (int) echo add(1.5, 2.5); // 3.75 (float)এই উদাহরণে, add() ফাংশনটি আর্গুমেন্ট টাইপ-এর উপর নির্ভর করে একটি integer বা একটি floating-point সংখ্যা রিটার্ন করে।মিক্সেড টাইপযদি একটি ফাংশন অনেক ধরনের মান প্রদান করে, আপনি mixed type ব্যবহার করতে পারেন। mixed type মানে একাধিক টাইপ এর একটি mixed type। এটি নিম্নলিখিত union type এর সমতুল্যঃobject|resource|array|string|int|float|bool|nullPHP 8.0.0 থেকে mixed পাওয়া যাচ্ছে।উদাহরণস্বরূপঃ filter_var() built-in ফাংশন ইঙ্গিত হিসাবে union type (array|int) এবং mixed type উভয়ই ব্যবহার করে।filter_var(mixed $value, int $filter = FILTER_DEFAULT, array|int $options = 0): mixedনাল এবল টাইপনিম্নলিখিত একটি ফাংশন ডিফাইন করে যা একটি স্ট্রিং গ্রহণ করে এবং সেই স্ট্রিং-এ বড় হাতের অক্ষর প্রদান করেঃ<?php function upper(string $str): string { return strtoupper($str); }আপনি যদি null দিয়ে একটি আর্গুমেন্ট পাস করান, তাহলে একটি ত্রুটি পাবেনঃ<?php function upper(string $str): string { return strtoupper($str); } $str = null; echo upper($str);Error:Fatal error: Uncaught TypeError: Argument 1 passed to upper() must be of the type string, null givenএটি ঠিক করতে, আপনি $str parameter-টিকে এইভাবে nullable করতে পারেনঃ<?php function upper(?string $str): string { return strtoupper($str); } $str = null; echo upper($str);নালেবল টাইপ PHP 7.1-এ চালু করা হয়েছিল।PHP আপনাকে টাইপ ডিক্লারেশন মার্ক করতে দেয় এবং টাইপ নামের পূর্বে প্রশ্নবােধক চিহ্ন (?) দিয়ে মানকে নালেবল হিসাবে প্রদান করে।উপরের উদাহরণে, আমরা $str প্যারামিটারের স্ট্রিং টাইপ এ (?) এড করি । ?string আপনাকে একটি স্ট্রিং আর্গুমেন্ট বা নাল পাস করতে দেয়।নোট করে রাখুনঃ mixed type ইতোমধ্যে null type-এ অন্তর্ভুক্ত করে। অতএব, আপনার এইটার মত নালেবল মিক্সড অন্তর্ভুক্ত করার প্রয়োজন নেইঃ? mixed এটি করার ফলেও একটি এ্যারর দেখাবে।সারাংশফাংশন প্যারামিটার এবং রিটার্ন টাইপ-এর জন্য PHP টাইপ হিন্টস ব্যবহার করুন। যদি ফাংশন কোনো ভেল্যু রিটার্ন না দেয়, তাহলে void টাইপ ব্যবহার করুন। বিভিন্ন ধরনের ফাংশন প্যারামিটার বা ফাংশন রিটার্ন ভেল্যু আশা করলে mixed টাইপ বা ইউনিয়ন টাইপ ব্যবহার করুন। টাইপ নালেবল করতে, একটি প্রশ্নবােধক চিহ্ন(?) সহ টাইপ প্রিফিক্স করুন। PHP ফাংশন (Functions) - Previous PHP ভেরিয়েবল স্কোপ (Variable scopes) Next - PHP ফাংশন (Functions) PHP স্ট্রিক্ট টাইপ (Strict typing)