PDA

View Full Version : سوال: متد clone__ در کلاس .



redhat2
یک شنبه 12 آبان 1392, 15:27 عصر
سلام به دوستان ، یه سوال داشتم ، در مورد کلمه ی کلیدی clone و متد clone در کلاس و استفاده واژه ی clone در متد clone__ اگه میشه یه توضیحی بدین . من از manual خوندم ولی چیزه زیادی دستگیرم نشد . ممنون میشم توضیح بدین . :لبخند::لبخند:

MMSHFE
یک شنبه 12 آبان 1392, 18:26 عصر
توضیح از این (http://php.net/manual/en/language.oop5.cloning.php) واضحتر؟
کد متد clone__ وقتی صدا زده میشه که بجای ایجاد یک شئ جدید با کلمه کلیدی new بخواین یک کپی از یک شئ موجود با کلمه کلیدی clone ایجاد کنید. مثال:

$obj1 = new Test();
$obj2 = clone $obj1;
دقت کنید که اگه مستقیماً بگین $obj1 = $obj2; و از clone استفاده نکنید، هر دو شئ به یک محل مشترک از حافظه اشاره میکنن و تغییر یکی از اونها در عمل، اون یکی دیگه رو هم تغییر میده (اشیاء بطور پیشفرض دسترسی ارجاعی دارن نه مقداری). البته متد clone__ اجباری نیست و بدون اون هم میتونید با کلمه کلیدی clone یک کپی از شئ دلخواه ایجاد کنید ولی اگه این متد وجود داشته باشه، بعد از اینکه کپی ایجاد شد، این متد هم اجرا میشه و هدف اصلی اون، اجرای یکسری کارها (مثل تغییر برخی فیلدها یا صدا زدن متدی) در زمان ایجاد کپی هست.

redhat2
دوشنبه 13 آبان 1392, 08:53 صبح
درسته ، یبار دیگه که manual خوندم تازه فهمیدم که چطوریه ، در حقیقت من با deep copy مشکل داشتم ، که با خوندن manual فهمیدم . در هر صورت ممنون .