PHP Professional,Laravel 5.6 Beginning to Advance এবং Zend Certified PHP Engineer (ZCPE ) Course এ সীমিত সংখ্যক আসন বাকি আছে। আগ্রহীদেরকে অতিসত্বর মাসুদ আলম স্যার এর সাথে যোগাযোগ করার জন্য অনুরোধ করা যাচ্ছে। স্যার এর মোবাইল নম্বর : ০১৭২২ ৮১ ৭৫ ৯১

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 ও পরিবর্তন হয়ে যাবে।

এবার দেখা যাক 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 হিসেবে ব্যবহার হচ্ছে।

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 টি চেঞ্জ করি।

এই ক্যাটাগরির অন্যান্য পোস্ট:

Masud Alam
আমি মাসুদ আলম, বাংলাদেশের ৩৬ তম Zend Certified Engineer । ২০০৯ সালে কম্পিউটার সাইন্স থেকে বেচেলর ডিগ্রী অর্জন করি। দীর্ঘ ৮ বছর আমি Winux Soft, SSL Wireless, IBCS-PRIMAX, Max Group, Canadian International Development Agency (CIDA), Care Bangladesh, World Vision, Hellen Keller সহ বিভিন্ন দেশি বিদেশী কোম্পানিতে ওয়েব ডেভেলপমেন্ট এবং সফটওয়্যার ডেভেলপমেন্ট এর উপর বিভিন্ন লিডিং পজিশন এ চাকরি এবং প্রজেক্ট লিড করি। বিশেষ ভাবে বাংলাদেশের ১০০ জন জেন্ড সার্টিফাইড ইঞ্জিনিয়ার এর মধ্যে ৫২ জন ই আমার হাতে জেন্ড সার্টিফাইড হয়েছে। বর্তমানে TechBeeo Software Company তে সিইও হিসাবে আছি । পাশাপাশি w3programmers ট্রেনিং ইনস্টিটিউট এ PHP এর উপর Professional এবং Advance Zend Certified PHP -7 Engineering কোর্স করাই। আর w3programmers.com সাইট টি আমার।

Leave a Reply

Your email address will not be published. Required fields are marked *