কম্পিউটার টিউটোরিয়াল

PHP ওভারলোডিং


ভূমিকা

অন্যান্য অবজেক্ট-অরিয়েন্টেড ভাষা যেমন C++ বা Java-তে ওভারলোডিং-এর ব্যাখ্যা PHP-এর তুলনায় ভিন্ন। সেখানে ওভারলোডিং বলতে একই নামে একাধিক মেথড থাকতে পারে কিন্তু আর্গুমেন্ট বা রিটার্ন টাইপ ভিন্ন। PHP-তে অন্যদিকে, গতিশীলভাবে প্রপার্টি এবং মেথড তৈরি করার বৈশিষ্ট্যটিই ওভারলোডিং নামে পরিচিত। PHP-এর ম্যাজিক মেথড (ডাবল আন্ডারস্কোর দিয়ে শুরু হওয়া মেথডের নাম) গতিশীল প্রপার্টি এবং মেথড সেট আপ করতে ব্যবহৃত হয়।

প্রপার্টি ওভারলোডিং-এর জন্য নিম্নলিখিত ম্যাজিক মেথডগুলো ব্যবহৃত হয়:

সিনট্যাক্স

public __set ( string $name , mixed $value ) : void
public __get ( string $name ) : mixed
public __isset ( string $name ) : bool
public __unset ( string $name ) : void

__set() প্রোতেক্টেড, প্রাইভেট বা অস্তিত্বহীন প্রপার্টিতে ডেটা লিখতে ব্যবহৃত হয়।

__get() অ্যাক্সেস করা যাচ্ছে না এমন প্রপার্টি থেকে ডেটা পড়ে।

__isset() অ্যাক্সেস করা যাচ্ছে না এমন প্রপার্টিতে isset() বা empty() কল করার সময় ট্রিগার হয়।

__unset() অ্যাক্সেস করা যাচ্ছে না এমন প্রপার্টিতে unset() কল করার সময় আহ্বান করা হয়।

নিচের কোডে, myprop নামক একটি গতিশীল প্রপার্টি সেট, রিট্রিভ এবং আনসেট করা হয়েছে:

উদাহরণ

<?php
class myclass{
    public function __set($name, $value){
        echo "setting $name property to $value \n";
        $this->$name = $value;
    }
    public function __get($name){
        echo "value of $name property is ";
        return $this->$name;
    }
    public function __isset($name){
        return isset($this->$name);
    }
    public function __unset($name){
        unset($this->$name);
    }
}
$obj = new myclass();
$obj->myprop="test";
echo $obj->myprop . "\n";
var_dump (isset($obj->myprop));
unset($obj->myprop);
var_dump (isset($obj->myprop));
?>

আউটপুট

আউটপুট নিচের মতো হবে:

setting myprop property to test
test
bool(true)
bool(false)

মেথড ওভারলোডিং

মেথড গতিশীলভাবে সেট করার জন্য দুটি ম্যাজিক মেথড ব্যবহৃত হয়: __call() এবং __callStatic()

public __call ( string $name , array $arguments ) : mixed
public static __callStatic ( string $name , array $arguments ) : mixed

__call() অবজেক্ট কনটেক্সটে অ্যাক্সেস করা যাচ্ছে না এমন মেথড আহ্বান করার সময় ট্রিগার হয়।

__callStatic() স্ট্যাটিক কনটেক্সটে অ্যাক্সেস করা যাচ্ছে না এমন মেথড আহ্বান করার সময় ট্রিগার হয়।

নিচের উদাহরণটি PHP-তে মেথড ওভারলোডিং প্রদর্শন করে:

উদাহরণ

<?php
class myclass{
    public function __call($name, $args){
        // নোট: $name-এর মান কেস-সংবেদনশীল।
        echo "Calling object method $name with " . implode(" ", $args). "\n";
    }
    public static function __callStatic($name, $args){
        echo "Calling static method $name with " . implode(" ", $args). "\n";
    }
}
$obj = new myclass();
$obj->mymethod("Hello World!");
myclass::mymethod("Hello World!");
?>

আউটপুট

উপরোক্ত কোড নিচের ফলাফল তৈরি করে:

Calling object method mymethod with Hello World!
Calling static method mymethod with Hello World!

  1. PHP CodeIgniter-এ foreach লুপের ভেতরে স্টোরড প্রসিডিউর কল করা

  2. PHP-তে ফাংশন ওভারলোডিং এবং ওভাররাইডিং

  3. PHP-তে গেটার (Getter) ও সেটার (Setter) মেথড কী?

  4. PHP-তে মেথড ওভারলোডিং (Method Overloading) কী?