آموزش متدهای جادویی Constructor و Destructor در PHP (سازنده و مخرب)
مقدمهای بر متدهای جادویی در PHP
در برنامهنویسی شیءگرا (OOP)، متدهای جادویی (Magic Methods) متدهایی هستند که با دو علامت زیرخط یا آندراسکور (__) شروع میشوند و در شرایط خاصی به صورت خودکار توسط موتور PHP صدا زده میشوند. دو مورد از حیاتیترین و پرکاربردترین متدهای جادویی، متد سازنده (Constructor) و متد مخرب (Destructor) هستند که مدیریت چرخه زندگی یک شیء را بر عهده دارند.
متد سازنده (Constructor) چیست؟
متد سازنده یا __construct متدی است که به محض نمونهسازی (Instantiation) یا ساخت یک شیء جدید از روی کلاس، به صورت کاملاً خودکار اجرا میشود. هدف اصلی این متد، مقداردهی اولیه به ویژگیها (Properties) و آمادهسازی پیشنیازهای شیء است.
class Car {
public $brand;
public $color;
// تعریف متد سازنده
public function __construct($brand, $color) {
$this--->brand = $brand;
$this->color = $color;
echo "یک ماشین از برند {$this->brand} با رنگ {$this->color} ساخته شد.\n";
}
}
// ساخت یک شیء جدید (متد سازنده خودکار اجرا میشود)
$myCar = new Car('Tesla', 'Black');
قابلیت Constructor Property Promotion در PHP 8
در نسخههای جدید PHP (نسخه 8 به بعد)، شما میتوانید برای کاهش کدهای تکراری، متغیرها را مستقیماً درون پارامترهای سازنده تعریف و مقداردهی کنید. به این قابلیت اصطلاحاً Constructor Property Promotion گفته میشود:
class User {
// تعریف و مقداردهی همزمان ویژگیها در سازنده
public function __construct(
public string $name,
public string $email
) {}
}
$user = new User('Ali', 'ali@example.com');
echo $user--->name; // خروجی: Ali
متد مخرب (Destructor) چیست؟
متد مخرب یا __destruct دقیقاً برعکس سازنده عمل میکند. این متد زمانی اجرا میشود که طول عمر شیء به پایان رسیده باشد؛ یعنی زمانی که هیچ ارجاعی به شیء در برنامه وجود نداشته باشد، شیء با دستور unset() نابود شود یا اجرای کل اسکریپت PHP به پایان برسد.
بیشترین کاربرد متد مخرب برای کارهای تمیزکاری (Cleanup) مانند بستن اتصالات دیتابیس، بستن فایلهای باز شده و آزادسازی منابع سیستم است.
class DatabaseConnection {
private $connection;
public function __construct() {
$this--->connection = "اتصال فعال به دیتابیس";
echo "اتصال برقرار شد.\n";
}
// متد مخرب برای بستن اتصال
public function __destruct() {
echo "اتصال دیتابیس بسته شد و منابع آزاد شدند.\n";
}
}
// ایجاد شیء
$db = new DatabaseConnection();
// انجام عملیات فرضی در برنامه
echo "در حال خواندن اطلاعات...\n";
// با پایان اسکریپت یا نابودی شیء، متد مخرب به صورت خودکار فراخوانی میشود
قوانین و استانداردهای گوگل در استفاده از سازنده و مخرب
- کارهای سنگین را در سازنده انجام ندهید: متد سازنده فقط باید وظیفه مقداردهی اولیه متغیرها را بر عهده داشته باشد. از نوشتن منطقهای پیچیده، اتصال به APIهای خارجی یا کوئریهای سنگین دیتابیس درون
__constructخودداری کنید. - عدم بازگرداندن مقدار (Return): متدهای سازنده و مخرب نباید هیچ مقداری را بازگردانند (Return کنند). خروجی آنها نادیده گرفته میشود.
- ترتیب اجرای مخربها: توجه داشته باشید که ترتیب نابودی اشیاء در پایان اسکریپت لزوماً تضمینشده نیست؛ بنابراین نباید به متغیرهای بیرونی در متد مخرب وابسته باشید.
پرسش و پاسخ
نظری یافت نشد
برای ارسال نظر ابتدا وارد شوید