مخرب (PHP Destructor)
تخریبکننده (__destruct): لحظهیِ وداع ⚰️🧹
تخریبکننده یا Destructor زمانی اجرا میشود که شیء دیگر موردِ نیاز نیست یا اسکریپت به پایان رسیده است. این تابع برایِ کارهایِ "نظافتی" عالی است.
کاربردهایِ رایج:
- بستنِ اتصالاتِ دیتابیس که باز ماندهاند.
- حذفِ فایلهایِ موقتی.
- نوشتنِ لاگِ نهایی برایِ یک عملیات.
رفتارِ خودکار:
برخلافِ زبانهایی مثل C++، در PHP مدیریتِ حافظه توسط Garbage Collector انجام میشود. وقتی هیچ متغیری دیگر به یک شیء اشاره نمیکند، تخریبکننده فراخوانی میشود.
{code_block('function __destruct() {\n echo "The object is being destroyed!";\n}')}مثالِ واقعی:
تصور کنید کلاسی برایِ آپلودِ فایل دارید. در سازنده فایل را باز میکنید و در تخریبکننده مطمئن میشوید که فایل بسته شده است، حتی اگر خطایی رخ داده باشد.
بخش تخصصی: معماریِ پیشرفته و مهندسیِ اشیاء 🐘💎
برنامهنویسیِ شیءگرا در PHP پس از نسخهیِ ۷ و ۸ تغییراتِ بنیادینی داشته و به ابزاری بسیار قدرتمند برایِ ساختِ سیستمهایِ پیچیده تبدیل شده است.
۱. ساختارِ حافظه و Object Handles
در PHP، متغیرهایی که حاویِ یک شیء هستند، خودِ شیء را ذخیره نمیکنند؛ بلکه یک Identifier یا دستگیره (Handle) را نگه میدارند که به جدولِ اشیاءِ درونیِ موتورِ Zend Engine اشاره میکند. به همین دلیل است که وقتی یک شیء را به تابعی پاس میدهید، تغییرات در همان شیءِ اصلی اعمال میشود (شبهارجاع).
۲. رعایتِ اصولِ SOLID
در طراحیِ کلاسها، همیشه به اصلِ Single Responsibility پایبند باشید. یک کلاس باید فقط یک دلیل برایِ تغییر داشته باشد. استفاده از Interfaces به شما اجازه میدهد وابستگیهایِ کدتان را به حداقل برسانید (Dependency Inversion).
۳. کدهایِ JIT-Friendly
موتورِ JIT در PHP 8 کدها را به زبانِ ماشین تبدیل میکند. نوشتنِ کدهایِ شیءگرا با ساختارِ مشخص و استفاده از Property Typing به JIT کمک میکند تا کدهایِ شما را بسیار بهینهتر اجرا کند.
تمرینهای عملی
برای تثبیت یادگیری این درس تمرینهای زیر را حل کنید
متد __destruct را برایِ یک کلاس بنویسید که عبارت "Done" را چاپ کند.
<?php
class Logger {
function __destruct() {
echo "Done";
}
}
?>
آماده رفتن به درس بعدی هستید؟
این درس را به پایان رساندید و میتوانید به درس بعدی بروید.