ভূমিকা
অবজেক্ট-অরিয়েন্টেড প্রোগ্রামিং টার্মিনোলজিতে, কনস্ট্রাক্টর হলো একটি মেথড যা ক্লাসের ভিতরে ডিফাইন করা থাকে এবং অবজেক্ট তৈরির সময় স্বয়ংক্রিয়ভাবে কল হয়। কনস্ট্রাক্টর মেথডের উদ্দেশ্য হলো অবজেক্ট ইনিশিয়ালাইজ করা। 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