استاد شما گفتید که وقتی destruct صدا زده میشود میآید Object را از memory حذف میکند، سوال من این هست که این کار را خودش به صورت اتوماتیک انجام میدهد بدون اینکه حتی ما unset کرده باشیم در destruct
سلام و احترام
اگر شما از مجیک متد destruct استفاده نکنید این اتفاق نخواهد افتاد. اما زمانی که شما از این مجیک متد استفاده میکنید میتونید هر عملیاتی را در آن پیاده سازی کنید. همان طور که میدانید این مجیک متد زمانی اجرا میشود که دیگر refrenceی به آبجت شما نباشد (ینی اینکه دیگه از آبجکت استفاده نکنید). برای مثال:
class Example
{
function __destruct()
{
echo "An object dies.";
}
}
$a = new Example();
unset($a);
An object dies.
اگه سوالتی بود باز بپرسید تا رفع ابهام کنیم
موفق باشید
امیر صالحی۱۸ مهر ۱۳۹۹، ۱۰:۴۸
متد destruct زمانی که هیچ رفرنسی به آبجکت وجود نداشته باشه صدا زده میشه.
اگر سوالت اینه که چه زمانی رفرنسی به آبجکت وجود نداره؟
زمانی که اسکریپت به پایان اجرا برسه یا exit شه
زمانی که آبجکت رو با unset از بین ببرید
لقمان آوند۱۹ مهر ۱۳۹۹، ۱۶:۰۳
ن نیازی نیست که شما object رو دستی از بین ببرید چون همون طور که اشاره شد اگر رفرنسی به object وجود نداشته باشه، خذف خواهد شد.
مجیک متد destruct هم زمانی که میخواد این object رو از بین ببره اجرا میشه و به شما دسترسی میده تا شاید بخواید در این حین یک کار مشخصی رو انجام بدید