حذف object

پرسیده شده
فعالیت 1305 روز پیش
دیده شده 530 بار
0

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

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

فایل پیوست

taha khajeh yazdi
taha khajeh yazdi

18 مهر 99

0
حذف شده

سلام و احترام

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

class Example
{
    function __destruct()
    {
        echo "An object dies.";
    }
}

$a = new Example();
unset($a);
 

خروجی:

An object dies.

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

موفق باشید

فایل پیوست

امیر صالحی

توسط

امیر صالحی

18 مهر 99

حذف شده
نه مهندس منظور من این نبود فرض کنید که ما یک کلاس داریم که تعدادی متد داخل آن هست بعد از روی کلاس شی میسازیم و متد ها را فراخوانی می کنیم و کارمان را انجام می دهیم وقتی خود php به انتهای کد ما برسد، چه متد جادویی destruct را نوشته باشیم و چه ننوشته باشیم آیا php بعد از اتمام کد می آید object را از حافظه حذف می کند یا اینکه ما اینکه ما حتما باید در destruct گفته باشیم که php وقتی اجرای کدت تمام شد ، شما بیا object را هم حدف کن
taha khajeh yazdi

19 مهر 99

1

مورد تایید استاد

حذف شده

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

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

  1. زمانی که اسکریپت به پایان اجرا برسه یا exit شه
  2. زمانی که آبجکت رو با unset از بین ببرید
فایل پیوست

لقمان آوند

توسط

لقمان آوند

19 مهر 99

0
حذف شده

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

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

فایل پیوست

امیر صالحی

توسط

امیر صالحی

20 مهر 99

حذف شده
حله گرفتم ممنون ، یعنی زمانی که اجرای کد ما تمام شود همه object هایی که توی برنامه ساخته ایم حذف می شود و بعد متد destruct فراخوانی می شود.
taha khajeh yazdi

21 مهر 99

حذف شده
بله دقیقا، وقتی هیچ استفاده‌ای از obj شما نباشه به صورت خودکار از روی حافظه حذف میشن تا فضای اضافه اشغال نکنن
امیر صالحی

21 مهر 99