Comment

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+ এ, আপনি  boolfloatint এবং  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|null

PHP 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 টাইপ বা ইউনিয়ন টাইপ ব্যবহার করুন।
  • টাইপ নালেবল করতে, একটি প্রশ্নবােধক চিহ্ন(?) সহ টাইপ প্রিফিক্স করুন।

Leave a Comment

Share this Doc

PHP টাইপ হিন্টস (Type hints)

Or copy link

CONTENTS

Subscribe

×
Cancel