توابع
__construct() و __destruct()
این دو متد از مهم ترین مجیک متد ها هستند به خصوص __construct() و می توان گفت مخالف یکدیگر هستند.مجیک متد
__construct() عملیاتی را در هنگام ساخته شدن یک شئ و مجیک متد __destruct() عملیاتی را در هنگام نابودی یک شئ انجام می دهند.مجیک متد
__construct() برای انجام تنظیمات اولیه و مقدماتی شئ استفاده شود. به طور کلی، در این تابع، متغیرها و ویژگیهای شیء مقداردهی اولیه میشوند و عملیاتی که قبل از استفاده از شئ نیاز است انجام شود انجام میگیرد.این مجیک متد می تواند ورودی داشته باشد و تعداد ورودی ها نا محدود هستند.
مثال:
class Fruit {
public $name;
public function __construct($name) {
$this->name = $name;
}
}
$fruit = new Fruit("banana");
در این مثال هنگام ساخته شدن شی Fruit ورودی به نام banana وارد constructمی شود و داخل
public $nameذخیره می شود.تمام این عملیات هنگام ساخت شئ انجام می شود و بعد از آن
$nameبا مقدار
banana در دسترس است.———————————-
تابع
__destruct() در هنگام حذف یک شئ از حافظه، فراخوانی میشود و میتواند برای انجام عملیاتی قبل از حذف شئ مورد استفاده قرار بگیرد. مثلا میتواند برای آزادسازی منابع خارجی مانند فایلها یا پایگاهدادهها استفاده شود.مثال:
class Fruit {
public $name;
public function __construct($name) {
$this->name = $name;
}
public function __destruct() {
echo $this->name . " is being deleted.";
}
}
$fruit
= new Fruit("banana");
unset($fruit
);
در مثال بالا در هنگام ساخت شئ متغیری با مقدار banana مقدار دهی میشود.پس از
unset کردن، شئ ما نابود و حذف شده در نتیجه در این مرحله destruct صدا زده می شود.در مثال بالا اگر شئ ما
unset نشود باز هم destruct اجرا می شود، زیرا کلاس ما عملیاتی برای انجام ندارد و در نتیجه نابود می شود و برنامه به اتمام می رسد. در نتیجه در این مرحله باز هم destruct اجرا می شود..