PHP Object Oriented Programming পর্ব-১৩: PHP OOP Object Cloning

PHP OOP তে Object cloning কি?

PHP OOP Object Cloning Tutorial

একটি object কে clone করে সম্পূর্ণ নতুন একটা object তৈরী করার পদ্ধতিকে PHP OOP তে Object Cloning বলে। ব্যাপারটা আরেকটু সহজ ভাবে বুঝা যাক , PHP তে আপনি যখন সরাসরি কোনো object copy করবেন, তখন এটি Object এর value এর পরিবর্তে Reference দিয়ে copy করবে, অর্থাৎ, আপনি যদি Main Object এর যেকোনো value পরিবর্তন করেন তখন copy করা Object টি affected হবে। এছাড়াও আপনি copy করা Object এর মান পরিবর্তন করলেও Main Object এর মানও পরিবর্তন হয়ে যাবে। সুতরাং আপনি যদি Object এর copy টি এমন ভাবে তৈরী করতে চান যা Main Object এর সাথে কোনও Reference থাকবেনা। আর Main Object এর সাথে copy করা object এর সাথে কোনো রকম reference ছাড়া copy করার পদ্ধতিকে PHP OOP তে Object cloning বলে।

প্রথমে দেখা যাক cloning পদ্ধতি ব্যবহার না করে একটা object থেকে copy করে আরেকটা object তৈরী করলে কি সমস্যা হতে পারে ?

<?php
class test{
    public $name;
    private $mobile;
    function __construct($name, $mobile){
        $this->name = $name;
        $this->mobile = $mobile;
    }
}
$obj1 = new test("Farhaan" , "01700000000");
echo "Result Before Copy \n";
print_r($obj1);
echo "After Copy Both Object will show same result\n";
$obj2 = $obj1; //Copy of the object
$obj2->name = "Habibr";
print_r($obj1);
print_r($obj2);
?>

copy object without cloning implementation

ব্যাখ্যা: লক্ষ্য করুন , উপরের কোডটিতে $obj1 থেকে $obj2 কপি করে আমাদের কোনো সুবিধা হয় নাই, কারণ কপি object $obj2 দিয়ে class এর কোনো property অথবা Method এ কোনো পরিবর্তন করলে Main Object $obj1 ও পরিবর্তন হচ্ছে। একই ভাবে Main Object $obj1 দিয়ে class এর কোনো property অথবা Method এ কোনো পরিবর্তন করলে copy Object $obj2 ও পরিবর্তন হয়ে যাবে।

Zend Certified PHP Engineering (ZCPE) Course

এবার দেখা যাক cloning পদ্ধতি ব্যবহার করে একটা object থেকে copy করে আরেকটা object তৈরী করার সুবিধা :

PHP তে কোনো object কে clone করতে হলে, যেই object কে clone করা হবে সেই object এর সামনে clone keyword বসাতে হবে। চলুন নিচের উদাহরণটি দেখি :

<?php
class test{
    public $name;
    private $mobile;
    function __construct($name, $mobile){
        $this->name = $name;
        $this->mobile = $mobile;
    }
}
$obj1 = new test("Farhaan" , "01700000000");
$obj2 = clone $obj1; //Copy of the object
$obj2->name = "Habibr";
print_r($obj1);
print_r($obj2);
?>

PHP OOP Object Cloning

ব্যাখ্যা: $obj1 এবং $obj2 Object দুইটি সম্পূর্ণ আলাদা object হিসেবে ব্যবহার হচ্ছে।

Zend Certified PHP Engineering (ZCPE) Course

PHP OOP তে Object Cloning এ __clone() Magic Method এর কাজ কি?

PHP OOP তে Object Cloning করা কালীন class এর মধ্যে কোনো property পরিবর্তন , অথবা কোনো বিশেষ result চাইলে __clone() Magic Method টি ব্যবহৃত হয়। চলুন একটা উদাহরণ দিয়ে বুঝা যাক :

<?php
class test{
    public $name;
    private $mobile;
    function __construct($name, $mobile){
        $this->name = $name;
        $this->mobile = $mobile;
    }
    public function __clone(){
        echo "During Cloning I'm only Executing! And I can change anything\n";
        $this->mobile="01922009988";
    }
}
$obj1 = new test("Farhaan" , "01700000000");
$obj2 = clone $obj1; //Copy of the object
$obj2->name = "Habibr";
print_r($obj1);
print_r($obj2);
?>

PHP OOP Object Cloning With __clone Magic Method

ব্যাখ্যা : লক্ষ্য করুন , Cloning টাইমে আমরা একটা message দেখায় , এবং Mobile Number টি চেঞ্জ করি।

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

Leave a Reply