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

PHP কনস্ট্রাক্টর এবং ডেস্ট্রাক্টর


ভূমিকা

অবজেক্ট-অরিয়েন্টেড প্রোগ্রামিং টার্মিনোলজিতে, কনস্ট্রাক্টর হলো একটি মেথড যা ক্লাসের ভিতরে ডিফাইন করা থাকে এবং অবজেক্ট তৈরির সময় স্বয়ংক্রিয়ভাবে কল হয়। কনস্ট্রাক্টর মেথডের উদ্দেশ্য হলো অবজেক্ট ইনিশিয়ালাইজ করা। PHP-তে, __construct নামক একটি বিশেষ মেথড কনস্ট্রাক্টর হিসেবে কাজ করে।

সিনট্যাক্স

__construct ([ mixed $args = "" [, $... ]] ) : void

কনস্ট্রাক্টর উদাহরণ

এই উদাহরণটি দেখায় কনস্ট্রাক্টর অবজেক্ট ডিক্লেয়ার হলে স্বয়ংক্রিয়ভাবে এক্সিকিউট হয়:

উদাহরণ

<?php
class myclass{
    function __construct(){
        echo "object initialized";
    }
}
$obj=new myclass();
?>

আউটপুট

এটি নিচের ফলাফল তৈরি করবে:

object initialized

আর্গুমেন্টসহ কনস্ট্রাক্টর

ক্লাস প্রপার্টি আর্গুমেন্টসহ কনস্ট্রাক্টর দ্বারা ইনিশিয়ালাইজ করা হয়:

উদাহরণ

<?php
class rectangle{
    var $height;
    var $width;
    function __construct($arg1, $arg2){
        $this->height=$arg1;
        $this->width=$arg2;
    }
    function show(){
        echo "Height=$this->height Width=$this->width";
    }
}
$obj=new rectangle(10,20);
$obj->show();
?>

আউটপুট

এটি নিচের ফলাফল তৈরি করবে:

Height=10 Width=20

ইনহেরিটেন্সে কনস্ট্রাক্টর

যদি প্যারেন্ট ক্লাসে কনস্ট্রাক্টর ডিফাইন করা থাকে, তাহলে সেটি চাইল্ড ক্লাসের কনস্ট্রাক্টরের ভিতরে parent::__construct দিয়ে কল করা যায়। তবে, যদি চাইল্ড ক্লাস কনস্ট্রাক্টর ডিফাইন না করে, তবে সেটি বেস ক্লাস থেকে ইনহেরিট করে।

উদাহরণ

<?php
class a{
    function __construct(){
        echo "this is a constructor of base class\n";
    }
}
class b extends a{
    function __construct(){
        parent::__construct();
        echo "this a constructor class b\n";
    }
}
class c extends a {
    //
}
$a=new a();
$b=new b();
$c=new c();
?>

আউটপুট

এটি নিচের ফলাফল তৈরি করবে:

this is a constructor of base class
this is a constructor of base class
this a constructor class b
this is a constructor of base class

ডেস্ট্রাক্টর

ডেস্ট্রাক্টর হলো একটি মেথড যা গার্বেজ কলেক্টর খুঁজে পেলে অবিলম্বে এক্সিকিউট হয় যে একটি নির্দিষ্ট অবজেক্টের আর কোনো রেফারেন্স নেই। PHP-তে ডেস্ট্রাক্টর মেথডের নাম __destruct। শাটডাউন সিকোয়েন্সের সময়ও অবজেক্টগুলো ডেস্ট্রয় হবে। ডেস্ট্রাক্টর মেথড কোনো আর্গুমেন্ট নেয় না, কোনো ডেটা টাইপ রিটার্ন করে না।

উদাহরণ

<?php
class myclass{
    function __construct(){
        echo "object is initialized\n";
    }
    function __destruct(){
        echo "object is destroyed\n";
    }
}
$obj=new myclass();
?>

আউটপুট

এটি নিচের ফলাফল দেখাবে:

object is initialized
object is destroyed

  1. PHP-তে অ্যাবস্ট্রাকশন (Abstraction) এবং এনক্যাপসুলেশন (Encapsulation) এর পার্থক্য

  2. PHP-তে ফাইনাল ক্লাস ও ফাইনাল মেথড ব্যাখ্যা

  3. C#-এ প্রাইভেট কনস্ট্রাক্টর এবং সিংলটন ক্লাস (Private Constructors and Singleton Classes)

  4. জাভাতে কনস্ট্রাক্টর কী?