۳ taha khajeh yazdi
حذف object
جامعه پی اچ پی ایجاد شده در ۱۸ مهر ۱۳۹۹

سلام جناب دکتر وققتون بخیر;

استاد شما گفتید که وقتی destruct صدا زده میشود می‌آید Object را از memory حذف میکند، سوال من این هست که این کار را خودش به صورت اتوماتیک انجام می‌دهد بدون اینکه حتی ما unset کرده باشیم در destruct 

سلام و احترام

اگر شما از مجیک متد destruct استفاده نکنید این اتفاق نخواهد افتاد. اما زمانی که شما از این مجیک متد استفاده می‌کنید میتونید هر عملیاتی را در آن پیاده سازی کنید. همان طور که میدانید این مجیک متد زمانی اجرا می‌شود که دیگر refrenceی به آبجت شما نباشد (ینی اینکه دیگه از آبجکت استفاده نکنید). برای مثال:

class Example
{
    function __destruct()
    {
        echo "An object dies.";
    }
}
$a = new Example();
unset($a);
 

An object dies.

اگه سوالتی بود باز بپرسید تا رفع ابهام کنیم

موفق باشید

امیر صالحی ۱۸ مهر ۱۳۹۹، ۱۰:۴۸

متد destruct زمانی که هیچ رفرنسی به آبجکت وجود نداشته باشه صدا زده میشه.

اگر سوالت اینه که چه زمانی رفرنسی به آبجکت وجود نداره؟

  1. زمانی که اسکریپت به پایان اجرا برسه یا exit شه
  2. زمانی که آبجکت رو با unset از بین ببرید
لقمان آوند ۱۹ مهر ۱۳۹۹، ۱۶:۰۳

ن نیازی نیست که شما object رو دستی از بین ببرید چون همون طور که اشاره شد اگر رفرنسی به object وجود نداشته باشه، خذف خواهد شد.

مجیک متد destruct هم زمانی که میخواد این object رو از بین ببره اجرا میشه و به شما دسترسی میده تا شاید بخواید در این حین یک کار مشخصی رو انجام بدید

امیر صالحی ۲۰ مهر ۱۳۹۹، ۰۷:۰۷