What is Data Type, Type hinting and Type Casting in PHP

PHP Data Type, Type Hinting and Type Casting

PHP-তে Data Type System কী?

PHP-তে, data type system বলতে বিভিন্ন ধরণের ডেটার শ্রেণী বিন্যাস এবং পরিচালনাকে বোঝায় যা PHP স্ক্রিপ্টে ব্যবহার করা যেতে পারে। PHP হল একটি dynamically typed language, যার মানে variable type গুলি compile time এর পরিবর্তে runtime এ নির্ধারিত হয়। এবং PHP নিজেই তার ডেটা টাইপ গুলো বুঝতে পারে। যাইহোক, PHP-এ বিভিন্ন ধরণের ডেটা উপস্থাপন করার জন্য data types এর একটি সমৃদ্ধ সেট রয়েছে এবং এই data type গুলি আপনার কোডে ডেটা কীভাবে সংরক্ষণ, ম্যানিপুলেট এবং আচরণ করবে তা নির্ধারণ করতে সহায়তা করে।

PHP তে কিভাবে data type ঘোষণা করব?

অন্যান্য Programming Language যেমন C এবং JAVA এর মতো PHP তে Variable তৈরির সময় তার data type ঘোষণা করা যায় না। আর এটা দরকার ও নেই। কারণ PHP হল একটি dynamically typed language. যার মানে আপনি আপনার Variable গুলোতে ইচ্ছামতো ডেটা রাখতে পারেন। আর PHP সেই ডেটার টাইপ বুঝে নিবে। নিচের উদাহরণ গুলো দেখলেই বুঝতে পারবেন।

<?php
$name="Mamnun Bin Masud";
$age=10.5;
$isMaried=false;
$subject=["Bangla","English","Arabic","Math","Science"];

echo gettype($name)."\n";  //string
echo gettype($age)."\n"; //double
echo gettype($isMaried)."\n"; //boolean
echo gettype($subject)."\n"; //array

Property Type Declaration

PHP তে সাধারণ variable গুলোতে data type ঘোষণার সুযোগ না থাকলেও, PHP Version 7.4 এবং তার পরের ভার্সন গুলো থেকে আপনি চাইলে class property গুলোতে তাদের data type ঘোষনা করতে পারেন। আর সে ক্ষেত্রে আপনি চাইলে declare(strict_types=1); ব্যবহার করে তার কার্যকারিতা পরীক্ষা করতে পারেন।

<?php
declare(strict_types=1);
class Person
{
    public string $name;
    public int $age;

    public function greet(): ?string
    {
            return "Hello, $this->name!, You're $this->age, Years Old";
    }
}

// Create a new person object.
$person = new Person;

$person->name="Masud Alam";
$person->age="39"; // will raise an  Uncaught TypeError
// Greet the person.
echo $person->greet();

উপরের উদাহরণ টি একটি Uncaught TypeError দিবে। তবে আপনি চাইলে Union Operator (|) ব্যবহার করে একাধিক data type ঘোষণা করতে পারেন।

<?php
declare(strict_types=1);
class Person
{
    public string $name;
    public int|string $age;

    public function greet(): ?string
    {
            return "Hello, $this->name!, You're $this->age Years Old";
    }
}

// Create a new person object.
$person = new Person;
$person2=new Person;

$person->name="Masud Alam";
$person->age="Thirty-Nine";
$person2->name="Sohel Alam";
$person2->age=38;
// Greet the person.
echo $person->greet(),"\n"; //Hello, Masud Alam!, You're Thirty-Nine Years Old
echo $person2->greet(); // Hello, Sohel Alam!, You're 38 Years Old

PHP Type Hinting কি ?

PHP তে Type hinting হল এমন একটি ফীচার যা ডেভেলপারদের প্রত্যাশিত data type কে ফাঙ্কশনের parameters, return values এবং class properties গুলোর উপর নির্দিষ্ট করতে দেয়। এতে এটি শুরুতেই error গুলি catch মাধ্যমে এবং কোডটি কী করছে তা বোঝা সহজ করে কোডের quality এবং reliability উন্নত করতে সহায়তা করতে পারে৷

Type hinting একটি শক্তিশালী টুল যা আপনাকে আরও robust এবং reliable PHP code লিখতে সাহায্য করতে পারে। এটি multiple contributors এর সাথে large codebases এর জন্য বিশেষভাবে কার্যকর।

PHP হল একটি dynamically typed language, যার মানে PHP তার কোড গুলো কম্পাইলের সময় ভেরিয়েবলের data type চেক করে না । যাইহোক, আপনি প্রত্যাশিত ধরণের function parameters, return values এবং class properties গুলিতে তাদের নির্দিষ্ট data type নির্দিষ্ট করতে type hints ব্যবহার করতে পারেন।

PHP-তে Type hinting ব্যবহার করতেই হবে , এমন কোনো বাধ্য বাধকতা নেই , তবে এটি একটি good practice হিসাবে বিবেচিত হয়। এটি আপনার কোডের quality এবং readability উন্নত করতে সাহায্য করতে পারে এবং শুরুতেই error গুলি ধরতেও সাহায্য করতে পারে৷

PHP-তে type hinting ব্যবহারে সুবিধা কি?

এখানে PHP-তে type hinting ব্যবহারের কিছু সুবিধা দেওয়া হলো:

  • Improved code readability and maintainability: Type hint গুলি স্পষ্ট করে যে প্রতিটি ফাংশন কী ধরনের ডেটা গ্রহণের এবং রিটার্ন এর প্রত্যাশা করে। এটি আপনার কোডকে পড়তে এবং বোঝার জন্য সহজ করে তোলে, যা আপনার কোড debugging বা maintaining করার সময় আপনার অনেক সময় এবং প্রচেষ্টা বাঁচাতে পারে।
  • Reduced errors: Type hinting আমাদের কোডের error গুলি প্রতিরোধ করতে সাহায্য করতে পারে তা নিশ্চিত করে যে ফাংশনগুলি শুধুমাত্র সঠিক টাইপের ডেটা দিয়ে কল করা হয়েছে৷ এটি আপনার কোডের quality এবং reliability উন্নত করতে সাহায্য করতে পারে।
  • Improved performance: Type hinting পিএইচপি-কে নির্দিষ্ট অপ্টিমাইজেশান করার অনুমতি দিয়ে আপনার অ্যাপ্লিকেশনের কর্মক্ষমতা উন্নত করতে সাহায্য করতে পারে।
  • Improved documentation: Type hints সুবিধা PHP কোডের জন্য documentation তৈরি করতে ব্যবহার করা যেতে পারে। এতে এটি অন্যান্য ডেভেলপারদের কোড কীভাবে ব্যবহার করতে হবে এবং এতে কী ধরনের ডেটা পাঠাতে হবে তা বুঝতে সাহায্য করতে পারে।
  • Better IDE support: অনেক IDE যেমন PhpStorm এবং Visual Studio Code এর মতো আধুনিক IDE গুলো type hinting সুবিধা কিছু বাড়তি সাপোর্ট প্রদান করে। এটি আপনাকে আরও নির্ভুল এবং দক্ষতার সাথে কোড লিখতে সাহায্য করতে পারে, কারণ IDE আপনাকে আপনার ব্যবহার করা data types এর feedback প্রদান করতে পারে।

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

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

  • Argument Type Hinting
  • Return Type Hinting

Zend Certified PHP Engineering (ZCPE) Course

PHP তে Argument Type Hinting কি ?

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

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)

Zend Certified PHP Engineering (ZCPE) 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 দিয়ে এর একটা উদাহরণ দেখা যাক :

<?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”

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 কিভাবে কাজ করে তা বুঝার জন্য নিচের উদাহরণটি দেখে নেয়া যাক :

Zend Certified PHP Engineering (ZCPE) 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 এর একটা উদাহরণ দেখা যাক :

<?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।

Zend Certified PHP Engineering (ZCPE) 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।

PHP তে কি কি data type সাপোর্ট করে?

PHP তে নিম্নোক্ত data type গুলো সাপোর্ট করে :

  • Primitive data types or Scalar type: এগুলি হল সবচেয়ে basic data types, এবং এগুলি সাধারণত built-in data type.
    • boolean type: একটি value যা true বা false হতে পারে।
    • int type: একটি পূর্ণ সংখ্যা, যেমন 1, 2, বা 3
    • float type: একটি দশমিক বিন্দু সহ একটি সংখ্যা, যেমন 3.14 বা 10.5
    • string type: অক্ষরের একটি ক্রম, যেমন “Hello, world!” অথবা “This is a string.”
  • Compound type: এগুলি হল এমন ধরণের data type যা একাধিক primitive ডেটা টাইপের সমন্বয়ে গঠিত।
    • array type: এটি এমন একটি data type যা অনেক গুলো value এর একটি collection যা key দ্বারা index করা হয়। index গুলি integer বা string হতে পারে। Array value গুলো অন্যান্য array সহ যেকোনও ধরণের হতে পারে।
    • // Create an empty array
      $array = [];
      
      // Add values to the array
      $array[] = 1;
      $array[] = "Hello, world!";
      $array["foo"] = "bar";
      
      // Access values in the array
      echo $array[0]; // 1
      echo $array["foo"]; // bar
      
      // Iterate over the array
      foreach ($array as $value) {
          echo $value . "\n";
      }
      
    • object type: Object হলো এমন ধরণের data type যা value এবং method সমূহের একটি collection যা একক ইউনিটে একত্রিত করা হয়।
    • <?php
      class User{
            public $name;
            public $age;
      
          public function setInfo($name,$age){
              $this->name=$name;
              $this->age=$age;
          }
      
      }
      
      $user=new User;
      $user->setInfo("Mamnun",11);
      
      echo $user->name;
      
  • Special Type:
    • Resource Type: এটি এমন একটি special data type যা একটি external resource কে বোঝায়, যেমন একটি file, database connection বা network socket. Resource variable গুলো external resource গুলোর reference হিসাবে কাজ করে।
    • <?php
      $myfile = fopen("example.txt", "r");
      if ($myfile) {
          // Read data from the file using the file resource
          $data = fread($myfile, filesize("example.txt"));
          
          // Close the file resource when done
          fclose($myfile);
          
          // Do something with the data
          echo $data;
      } else {
          echo "Failed to open the file.";
      }
      
      
    • never type: এটি একটি special data type যা পিএইচপি 8.1-এ চালু করা হয়েছিল। এটি এমন একটি ফাংশনকে রিপ্রেজেন্ট করে যা কখনই একটি মান রিটার্ন দেয় না। এর মানে হল যে ফাংশনটি হয় একটি exception throw করে, exit() কল করে, অথবা একটি infinite loop এ পড়ে যায়।
    • never type এমন ফাংশনগুলির জন্য উপযোগী যেগুলির কোনও মান return দেওয়ার কথা নয়, যেমন যে ফাংশনগুলি data validation করতে ব্যবহৃত হয়৷

      never return type সহ একটি ফাংশন ঘোষণা করতে, আপনাকে never কীওয়ার্ড ব্যবহার করতে হবে। উদাহরণস্বরূপ, নিম্নলিখিত ফাংশনটি একটি exception throw করে এবং তাই এটি কখনও কোনো মান রিটার্ন দেয় না:

      function validatePositiveInteger(int $number): never
      {
          if ($number <= 0) {
              throw new Exception("The number must be positive.");
          }
      }
      
      
      function writeToFile(string $string): never
      {
          file_put_contents("myfile.txt", $string);
      }
      
      function initializeDatabaseConnection(): never
      {
          global $db;
      
          $db = new PDO("mysql:host=localhost;dbname=my_database", "root", "");
      }
      
    • void type: এটি একটি special data type যা রিটার্ন মানের অনুপস্থিতিকে প্রতিনিধিত্ব করে। এটি পিএইচপি 7.1 এ চালু করা হয়েছিল।
    • function greet(): void
      {
          echo "Hello, world!";
      }
      
    • Relative class types: self, parent, and static
    • callable type: PHP-তে callable data type হল একটি special data type যা যেকোন কিছুর প্রতিনিধিত্ব করতে পারে যাকে একটি function হিসাবে কল করা যেতে পারে। যেমন function, method, object অথবা একটা closure.
    • <?php 
      function apply_function(callable $function, array $args)
      {
          return call_user_func_array($function, $args);
      }
      
      $string = "hello, world!";
      
      echo apply_function("strlen", [$string]); // 12
      echo apply_function("ucwords", [$string]); // Hello, World!
      
    • null type: এটি একটি special data type যা একটি value অর্থাৎ মানের অনুপস্থিতিকে রিপ্রেজেন্ট করে। null type সেই value গুলিকে রিপ্রেজেন্ট করার জন্য উপযোগী যা এখনও জানা নেই বা যেগুলি বিদ্যমান নেই৷ উদাহরণস্বরূপ, আপনি একটি ভেরিয়েবলের মান রিপ্রেজেন্ট করতে null type ব্যবহার করতে পারেন যা এখনও একটি মান নির্ধারণ করা হয়নি, বা খালি একটি ডাটাবেস ক্ষেত্রের মান।
    • <?php
      $var = null;
      if (is_null($var)) {
          echo "The variable \$var is null.";
      }
      
      <?php 
      function logMessage(?string $message) {
          if ($message !== null) {
              echo $message;
          }
      }
      logMessage("Hello");// Will show Hello
      logMessage(null);//Nothing
      
      
      <?php
      
      class Person
      {
          public ?string $name;
          public ?int $age;
      
          public function __construct(?string $name, ?int $age)
          {
              $this->name = $name;
              $this->age = $age;
          }
      
          public function greet(): ?string
          {
              if ($this->name === null) {
                  return "Hello, world!\n";
              } else {
                  return "Hello, $this->name!, You're $this->age, Years Old";
              }
          }
      }
      
      // Create a new person object.
      $person = new Person(null, null);
      
      $person2 = new Person("Akram", 23);
      
      // Greet the person.
      echo $person->greet();
      echo $person2->greet();
      
      
  • Literal types :Literal types হল সেইগুলি যা শুধুমাত্র একটি value এর type ই শুধু চেক করেনা বরং এর value ও নিজেই পরীক্ষা করে। পিএইচপি Literal types সমর্থন করে: PHP 8.0.0 থেকে false, এবং PHP 8.2.0 হিসাবে true.
  • <?php 
    
    function isTrue(true $isTrue): true
    {
        return $isTrue;
    }
    
    function isFalse(false $isFalse): false
    {
        return $isFalse;
    }
    
    echo isTrue(true); //1
    echo isFalse(false); // Nothing
    
    
    
  • User-defined types (generally referred to as class-types)
    • Interfaces
    • Classes
    • Enumerations: এটি Enumerations, enum নামেও পরিচিত, পিএইচপি 8.1-এ এটি একটি নতুন ডেটা টাইপ। এটি আপনাকে নামযুক্ত constants গুলির একটি সেট সংজ্ঞায়িত করার অনুমতি দেয়, যা তারপরে বিভিন্ন অবস্থা বা মানকে উপস্থাপন করতে ব্যবহার করা যেতে পারে।
    • <?php 
      enum Suit: string
      {
          case Hearts = 'Hearts';
          case Diamonds = 'Diamonds';
          case Clubs = 'Clubs';
          case Spades = 'Spades';
      }
      
      echo Suit::Hearts->value; // Hearts
      
  • iterable data type: PHP-তে iterable data type হচ্ছে অনেক গুলো value এর একটি collection কে রিপ্রেজেন্ট করতে ব্যবহৃত হয় যা আপনি একটি লুপ ব্যবহার করে iterate করতে পারেন, যেমন একটি foreach লুপ। এটি integers, strings বা array গুলির মতো একটি নির্দিষ্ট data type নয় বরং একটি type hint যা আপনাকে বিভিন্ন iterable structures এর সাথে কাজ করতে দেয়, arrays এবং objects সহ যা Traversable interface বাস্তবায়ন করে।
  • <?php 
    
    function processIterable(iterable $items) {
        foreach ($items as $item) {
            echo $item,"\n";
        }
    }
    
    processIterable([4,3,5,6]);
    
    <?php 
    
    function generateIterableData(): iterable {
        // Generate and return an iterable collection of data
        return [4,3,5,6];
    }
    
    
    foreach(generateIterableData() as $item){
    	echo $item,"\n";
    }
    
    
    
    
  • mixed data type:
  • PHP-তে, mixed data type হল PHP 8.0-তে প্রবর্তিত একটি type hint. এটি নির্দেশ করতে ব্যবহৃত হয় যে একটি function বা method বিভিন্ন ধরণের arguments বা return values গ্রহণ করতে পারে। অন্য কথায়, mixed type এর একটি প্যারামিটার বা রিটার্ন মান যেকোন ডেটা টাইপের হতে পারে এবং পিএইচপি এতে কোনো নির্দিষ্ট ধরনের সীমাবদ্ধতা প্রয়োগ করে না।

    <?php 
    function processMixedValue(mixed $value): mixed {
        // Perform some operations on $value
        return $value;
    }
     
    echo processMixedValue(42);      // Works, as $value can be an integer
    echo processMixedValue("Hello");  // Works, as $value can be a string
    echo processMixedValue(true);       // Works, as $value can be a boolean
    
    
    
  • Union data type
  • PHP-তে একটি union type এমন একটি টাইপ যা দুই বা তার বেশি ভিন্ন types এর হতে পারে। উদাহরণস্বরূপ, একটি ভেরিয়েবল টাইপ string|int হয় একটি string বা একটি integer হতে পারে।

    Union type গুলি ডেটা উপস্থাপনের জন্য দরকারী যা একাধিক types এর ডেটা হতে পারে। উদাহরণস্বরূপ, একটি ফাংশন যখন একটি ইউনিয়ন টাইপ প্যারামিটার নেয়, তখন এটি বিভিন্ন ধরণের ডেটা পরিচালনা করতে ব্যবহার করা যেতে পারে।

    একটি union type ঘোষণা করতে, আপনাকে different types কে আলাদা করতে পাইপ অক্ষর (|) ব্যবহার করতে হবে।

    <?php 
    function greet(string|int $data): string
    {
        if (is_string($data)) {
            return "Hello, $data!";
        }
        elseif(is_int($data)){
        	return "You're $data years Old!";
        }
        else {
            return "Hello, world!";
        }
    }
    
    echo greet(23);
    ?>
    
    

php তে type casting কি?

PHP -তে Type casting বলতে একটি value কে এক data type থেকে অন্য data type এ রূপান্তর করার প্রক্রিয়া বোঝায়। পিএইচপি ডেটা ম্যানিপুলেশন এবং কম্প্যাটিবিলিটির সুবিধার্থে type casting এর জন্য বিভিন্ন মেকানিজম বা প্রক্রিয়া সরবরাহ করে। এখানে পিএইচপি-তে type casting করার কিছু সাধারণ উপায় নিয়ে আলোচনা করা হলো:

১. Implicit Type Casting: PHP-তে, আপনি যখন বিভিন্ন ডেটা টাইপের values জড়িত অপারেশন বা তুলনা করেন তখন Implicit Type Casting স্বয়ংক্রিয়ভাবে ঘটে। পিএইচপি অপারেশন করার আগে একটি বা উভয় মানকে একটি সাধারণ ডেটা টাইপে রূপান্তর করার চেষ্টা করে। উদাহরণ:

$integer = 42;
$string = "5";

$result = $integer + $string; // $string is implicitly converted to an integer
// $result is now 47 (integer)

এই উদাহরণে, PHP string “5” কে একটি integer এ রূপান্তরিত করে যোগ করার জন্য।

২. Explicit Type Casting: আপনি casting operator গুলো ব্যবহার করে একটি নির্দিষ্ট data type এর value কে স্পষ্টভাবে cast করতে পারেন। PHP নিম্নলিখিত cast অপারেটর প্রদান করে:

  • (int) or (integer): integer এ casting করবে।
  • (float) or (double): floating-point number এ casting করবে।
  • (string): string এ casting করবে।
  • (bool) or (boolean): boolean এ casting করবে।
  • (array): array তে casting করবে।
  • (object): object এ casting করবে।

এখানে একটি Explicit Type Casting এর উদাহরণ দেওয়া হলো:

$floatValue = 3.14;
$intValue = (int)$floatValue; // Explicitly cast to an integer
// $intValue is now 3 (integer)

এই operation টি স্পষ্টভাবে floating-point number টিকে একটি integer তে casts করে, দশমিক অংশকে truncating ফেলে দিয়ে ।

৩. Type Juggling: PHP বিভিন্ন প্রেক্ষাপটের উপর ভিত্তি করে dynamic data type কনভার্সন করে থাকে। উদাহরণস্বরূপ, একটি string এবং একটি integer কে সংযুক্ত করার সময়, পিএইচপি automatically একটি integer কে একটি string এ কনভার্ট করবে:

$string = "Hello, ";
$integer = 42;

$result = $string . $integer; // $integer is automatically converted to a string
// $result is now "Hello, 42" (string)

৪. Settype Function: settype ফাংশন ব্যবহার করে আপনি একটি ভেরিয়েবলের data type পরিবর্তন করতে পারেন :

$value = "123";
settype($value, "int"); // Change the data type to integer

settype ব্যবহার করার পর, ভেরিয়েবল $value টাইপ integer হবে।

৫. Type Casting Functions: PHP বিভিন্ন ধরনের কাস্টিং ফাংশন প্রদান করে, যেমন intval, floatval, strval এবং boolval, যা আপনাকে সুনির্দিষ্ট ধরনের value গুলিকে স্পষ্টভাবে কাস্ট করতে দেয়। উদাহরণ স্বরূপ:

$stringValue = "123";
$intValue = intval($stringValue); // Cast to integer using intval

$intValue-এ integer value 123 থাকবে।

আমি মাসুদ আলম, বাংলাদেশের ৩৬ তম 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 কোর্স করাই। আর অবসর সময়ে w3programmers.com এ ওয়েব টেকনোলজি নিয়ে লেখালেখি করি।

3 thoughts on “What is Data Type, Type hinting and Type Casting in PHP

Leave a Reply