DEV Community

Azmol Hossain
Azmol Hossain

Posted on

PHP Magic Methods: বিস্তারিত ব্যাখ্যা

Image description
PHP-এর Magic Methods হল কিছু বিশেষ মেথড যেগুলো __ (double underscore) দিয়ে শুরু হয় এবং PHP নিজে থেকে নির্দিষ্ট কন্ডিশনে এগুলো কল করে। নিচে সবগুলো গুরুত্বপূর্ণ Magic Method-এর বিস্তারিত ব্যাখ্যা দেওয়া হলো:


1. __construct()

ব্যাখ্যা: ক্লাস থেকে অবজেক্ট তৈরি হওয়ার সাথে সাথে এই মেথডটি অটোমেটিক কল হয়। এটা constructor হিসেবে কাজ করে।

class MyClass {
    function __construct() {
        echo "Object created";
    }
}
$obj = new MyClass();
Enter fullscreen mode Exit fullscreen mode

2. __destruct()

ব্যাখ্যা: অবজেক্ট ধ্বংস হওয়ার সময় (script শেষ হলে বা unset() করলে) চালু হয়।

class MyClass {
    function __destruct() {
        echo "Object destroyed";
    }
}
Enter fullscreen mode Exit fullscreen mode

3. __call($name, $arguments)

ব্যাখ্যা: যখন inaccessible বা non-existing মেথড কল করা হয় তখন এটি চালু হয়।

class MyClass {
    function __call($name, $arguments) {
        echo "Method $name does not exist";
    }
}
$obj = new MyClass();
$obj->missingMethod();
Enter fullscreen mode Exit fullscreen mode

4. __callStatic($name, $arguments)

ব্যাখ্যা: একই কাজ স্ট্যাটিক মেথডের জন্য করে।

class MyClass {
    public static function __callStatic($name, $arguments) {
        echo "Static method $name not found";
    }
}
MyClass::missingStatic();
Enter fullscreen mode Exit fullscreen mode

5. __get($property)

ব্যাখ্যা: inaccessible বা non-existing property রিড করার সময় কল হয়।

class MyClass {
    function __get($name) {
        return "Property $name not found";
    }
}
$obj = new MyClass();
echo $obj->name;
Enter fullscreen mode Exit fullscreen mode

6. __set($property, $value)

ব্যাখ্যা: inaccessible বা non-existing property-তে ভ্যালু অ্যাসাইন করলে কল হয়।

class MyClass {
    function __set($name, $value) {
        echo "Setting $name to $value";
    }
}
$obj = new MyClass();
$obj->name = "PHP";
Enter fullscreen mode Exit fullscreen mode

7. __isset($property)

ব্যাখ্যা: isset() বা empty() ব্যবহার করলে এটি কল হয়।

class MyClass {
    function __isset($name) {
        return false;
    }
}
$obj = new MyClass();
isset($obj->name); // false
Enter fullscreen mode Exit fullscreen mode

8. __unset($property)

ব্যাখ্যা: unset() করলে এটি কল হয়।

class MyClass {
    function __unset($name) {
        echo "Unsetting $name";
    }
}
$obj = new MyClass();
unset($obj->name);
Enter fullscreen mode Exit fullscreen mode

9. __sleep()

ব্যাখ্যা: অবজেক্ট serialize() করার আগে চালু হয়, কোন properties serialize হবে তা নির্ধারণ করে।

class MyClass {
    public $name = "PHP";
    function __sleep() {
        return ["name"];
    }
}
Enter fullscreen mode Exit fullscreen mode

10. __wakeup()

ব্যাখ্যা: unserialize() করার পরে চালু হয়।

class MyClass {
    function __wakeup() {
        echo "Object unserialized";
    }
}
Enter fullscreen mode Exit fullscreen mode

11. __serialize()

ব্যাখ্যা: PHP 7.4+ এ অবজেক্ট কাস্টমভাবে serialize করার জন্য।

class MyClass {
    public function __serialize(): array {
        return [];
    }
}
Enter fullscreen mode Exit fullscreen mode

12. __unserialize()

ব্যাখ্যা: PHP 7.4+ এ কাস্টমভাবে unserialize করার জন্য।

class MyClass {
    public function __unserialize(array $data): void {
        // Restore data
    }
}
Enter fullscreen mode Exit fullscreen mode

13. __toString()

ব্যাখ্যা: অবজেক্টকে string হিসেবে ব্যবহার করলে কল হয়।

class MyClass {
    function __toString() {
        return "Object as string";
    }
}
$obj = new MyClass();
echo $obj;
Enter fullscreen mode Exit fullscreen mode

14. __invoke()

ব্যাখ্যা: অবজেক্টকে ফাংশনের মতো কল করলে এটি চালু হয়।

class MyClass {
    function __invoke() {
        echo "Object invoked as function";
    }
}
$obj = new MyClass();
$obj();
Enter fullscreen mode Exit fullscreen mode

15. __set_state($array)

ব্যাখ্যা: var_export() ব্যবহার করলে অবজেক্ট recreate করতে ব্যবহৃত হয়।

class MyClass {
    public static function __set_state($array) {
        $obj = new self();
        return $obj;
    }
}
Enter fullscreen mode Exit fullscreen mode

16. __clone()

ব্যাখ্যা: অবজেক্ট ক্লোন করার সময় চালু হয়।

class MyClass {
    function __clone() {
        echo "Object cloned";
    }
}
$obj = new MyClass();
$copy = clone $obj;
Enter fullscreen mode Exit fullscreen mode

17. __debugInfo()

ব্যাখ্যা: var_dump() ব্যবহারে কী দেখাবে তা নির্ধারণ করে।

class MyClass {
    private $data = "secret";
    function __debugInfo() {
        return ["info" => "custom debug info"];
    }
}
$obj = new MyClass();
var_dump($obj);
Enter fullscreen mode Exit fullscreen mode

এই ছিল PHP-এর সকল Magic Method-এর বিস্তারিত ব্যাখ্যা। এগুলো প্রফেশনাল ও ক্লিন কোড লেখার জন্য খুবই গুরুত্বপূর্ণ।

Top comments (0)