PHP functions পর্ব-৩: PHP Type hinting

Last Updated on July 29, 2022 by Masud Alam

PHP Type Hinting কি ?

PHP Type Hinting

PHP তে function call করা কালীন যেসব Parameter দিয়ে যেসব Argument গ্রহণ করব তার Data type এবং function থেকে যেসব value return করবো তার data type কি হবে, তা নির্ধারণ করার পদ্ধতিকে PHP তে Type Hinting বলে।

PHP তে Type Hinting কত প্রকার এবং কি কি ?

PHP তে Type Hinting দুই প্রকার :

  • Argument Type Hinting
  • Return Type Hinting

https://w3programmers.com/bangla/php-course/

PHP তে Argument Type Hinting কি ?

PHP তে function call করা কালীন Parameter এর মাধ্যমে যেসব Argument গ্রহণ করব তার data type কি হবে, তা নির্ধারণ করার পদ্ধতিকে PHP তে Argument Type Hinting বলে।

PHP তে Type Hinting এর জন্য কি কি data type সাপোর্ট করে?

PHP 7.1 পর্যন্ত ৯ ধরনের data type সাপোর্ট করে :

  • Class/interface
  • self
  • array
  • callable
  • bool
  • float
  • int
  • string
  • iterable

PHP তে Argument Type Hinting কিভাবে কাজ করে?

PHP তে Argument Type Hinting কিভাবে কাজ করে তা বুঝার জন্য নিচের উদাহরণটি দেখে নেয়া যাক :

<?php
function TypeHint(int $a){
	var_dump($a);
}

TypeHint(5.5); //Output: (int)5
?>

ব্যাখ্যা : উপরের typeHint function এ আমরা $a parameter এর data type হিসেবে integer ঘোষণা করেছি , যার জন্য $a paramter টি আমাদের argument value 5.5 কে integer এ convert করে শুধু 5 return করবে। আর যেহেতু PHP একটা loosely type language তাই কোনো রকম error দেখাবেনা। তবে আমরা চাইলে declare function দিয়ে PHP কে run time strict type করে নিতে পারি। আর তখন PHP একটা fatal error দেখাবে। নিচের উদাহরণ দেখুন :

<?php
declare(strict_types=1);
function TypeHint(int $a){
	var_dump($a);
}

TypeHint(5.5);
?>

Output Error:

PHP typehint error

তবে যদি argument value 5.5 float number এর পরিবর্তে integer 5 পাঠান , তাহলে কোনো রকম error দেখাবেনা। নিচের উদাহরণ দেখুন :

<?php
declare(strict_types=1);
function TypeHint(int $a){
	var_dump($a);
}

TypeHint(5);
?>
int(5)

https://w3programmers.com/bangla/php-course/

Type Hinting error handling এর জন্য PHP তে কোনো extension বা class আছে ?

হ্যাঁ Catching TypeError Exception class দিয়ে আরো সুন্দর করে error রেজাল্ট দেখাতে পারি। নিচের উদাহরণ দেখুন :

<?php
declare(strict_types=1);
function TypeHint(int $a){
	return $a;
}

try {
    var_dump(typeHint(5));
    echo "<br>";
    var_dump(typeHint(5.5));
} catch (TypeError $e) {
    echo 'Error: '.$e->getMessage();
}
?>

type hinting catching error

এবার চলুন array দিয়ে type hinting এর একটা উদাহরণ দেখা যাক :

<?php
declare(strict_types=1);
function TypeHint(array $a){
	return $a;
}

try {
    var_dump(typeHint([5,6,5.5]));
    echo "<br>";
    var_dump(typeHint(5));
} catch (TypeError $e) {
    echo 'Error: '.$e->getMessage();
}
?>

Result:

PHP array typeHint

ব্যাখ্যা :try block এর মধ্যে প্রথম typeHint function টি কাজ করবে, কারণ সেখানে আমরা function এর Parameter কে type hint হিসেবে array ঘোষণা করেছি , আর এর জন্য argument এর value ও array পাঠিয়েছি। আর try block এর মধ্যে দ্বিতীয় typeHint function টি কাজ করবেনাl কারণ সেখানে argument এর value পাঠিয়েছি interger.

এবার চলুন object দিয়ে type hinting এর একটা উদাহরণ দেখা যাক :

<?php
declare(strict_types=1);
class A{
    public $name="Mr. Khaled";
    public $email="khaled@mail.com";
    public $address="Dhaka,Bangladesh";
}


function TypeHint(A $a){
	return $a;
}

try {
    var_dump(typeHint(new A));
    echo "<br>";
    var_dump(typeHint("Hello World"));
} catch (TypeError $e) {
    echo 'Error: '.$e->getMessage();
}
?>

Result:

TypeHinting with Object

ব্যাখ্যা :try block এর মধ্যে প্রথম typeHint function টি কাজ করবে, কারণ সেখানে আমরা function এর Parameter কে type hint হিসেবে Object A ঘোষণা করেছি , আর এর জন্য argument এর value ও Object A পাঠিয়েছি। আর try block এর মধ্যে দ্বিতীয় typeHint function টি কাজ করবেনাl কারণ সেখানে argument এর value পাঠিয়েছি “String”

https://w3programmers.com/bangla/zend-certified-php-engineering-zcpe-course/

Return Type Hinting কি ?

PHP তে function call করা কালীন function থেকে যেসব value return করবে, তার data type কি হবে তা নির্ধারণ করার পদ্ধতিকে PHP তে Return Type Hinting বলে।

PHP তে Return Type Hinting কিভাবে কাজ করে?

PHP তে Return Type Hinting কিভাবে কাজ করে তা বুঝার জন্য নিচের উদাহরণটি দেখে নেয়া যাক :

https://w3programmers.com/bangla/php-course/

<?php
function sum($a, $b): int {
    return $a + $b;
}

// Note that a float will be returned.
var_dump(sum(3, 2.5));  //Result: 5
?>

ব্যাখ্যা : উপরের sum function এ parenthesis এর পর return data type হিসেবে integer ঘোষণা করেছি , যার জন্য আমাদের return value 5.5 কে integer এ convert করে শুধু 5 return করবে। আর যেহেতু PHP একটা loosely type language তাই কোনো রকম error দেখাবেনা। তবে আমরা চাইলে declare function দিয়ে PHP কে run time strict type করে নিতে পারি। আর তখন PHP একটা fatal error দেখাবে। নিচের উদাহরণ দেখুন :

<?php
declare(strict_types=1);
function sum($a, $b): int {
    return $a + $b;
}

// Note that a float will be returned.
var_dump(sum(3, 2.5));
?>

Result

Return Type Decleration

তবে যদি return value 5.5 float number এর পরিবর্তে integer 5 হয় , তাহলে কোনো রকম error দেখাবেনা। নিচের উদাহরণ দেখুন :

<?php
declare(strict_types=1);
function sum($a, $b): int {
    return $a + $b;
}

// Note that a float will be returned.
var_dump(sum(3, 2));
?>

এবার চলুন object দিয়ে Return type hinting এর একটা উদাহরণ দেখা যাক :

<?php
declare(strict_types=1);
class A{
    public $name="Mr. Khaled";
}

function TypeHint1():A{
    return new A;
}
 
function TypeHint2():A{
    return "Hello World";
}
 
try {
    var_dump(typeHint1());
    var_dump(typeHint2());
} catch (TypeError $e) {
    echo 'Error: '.$e->getMessage();
}
?>

ব্যাখ্যা : এখানে typeHint1 function কোনো error দেখাবেনা। কারণ আমরা return type Object নির্ধারণ করেছি function এর return ও Object করা হয়েছে। কিন্তু typeHint২ function fatal error দেখাবে , কারণ return type নির্ধারণ করা হয়েছে Object কিন্তু return করা হয়েছে string।

https://w3programmers.com/bangla/php-course/

এবার চলুন array দিয়ে Return type এর একটা উদাহরণ দেখা যাক :

<?php
declare(strict_types=1);


function TypeHint1():array{
    return ["a","b","c"];
}
 
function TypeHint2():A{
    return "Hello World";
}
 
try {
    var_dump(typeHint1());
    var_dump(typeHint2());
} catch (TypeError $e) {
    echo 'Error: '.$e->getMessage();
}
?>

ব্যাখ্যা : এখানে typeHint1 function কোনো error দেখাবেনা। কারণ আমরা return type Array নির্ধারণ করেছি function এর return ও Array করা হয়েছে। কিন্তু typeHint২ function fatal error দেখাবে , কারণ return type নির্ধারণ করা হয়েছে Array কিন্তু return করা হয়েছে string।

আমি মাসুদ আলম, বাংলাদেশের ৩৬ তম Zend Certified Engineer । ২০০৯ সালে কম্পিউটার সাইন্স থেকে বেচেলর ডিগ্রী অর্জন করি। দীর্ঘ ১৯ বছর আমি Winux Soft, SSL Wireless, IBCS-PRIMAX, Max Group, Canadian International Development Agency (CIDA), Care Bangladesh, World Vision, Hellen Keller, Amarbebsha Ltd সহ বিভিন্ন দেশি বিদেশী কোম্পানিতে ডেটা সাইন্স, মেশিন লার্নিং, বিগ ডেটা, ওয়েব ডেভেলপমেন্ট এবং সফটওয়্যার ডেভেলপমেন্ট এর উপর বিভিন্ন লিডিং পজিশন এ চাকরি এবং প্রজেক্ট লিড করি। ভাবে বাংলাদেশের ১৮৫ জন জেন্ড সার্টিফাইড ইঞ্জিনিয়ার এর মধ্যে ১২০এরও অধিক ছাত্র । বর্তমানে w3programmers ট্রেনিং ইনস্টিটিউট এ PHP এর উপর Professional এবং Advance Zend Certified PHP -8.2 Engineering, Laravel Mastering Course with ReactJS, Python Beginning To Advance with Blockchain, Machine Learning and Data Science, Professional WordPress Plugin Development Beginning to Advance এবং Mastering DevOps Engineering কোর্স করাই। আর অবসর সময়ে w3programmers.com এ ওয়েব টেকনোলজি নিয়ে লেখালেখি করি।

3 thoughts on “PHP functions পর্ব-৩: PHP Type hinting

Leave a Reply