تفاوت کپی کردن شی با ایجاد یک شی چیست؟

i-php-i

Active Member
وقتی می خوایم یه شی ایجاد کنیم، از کلمه کلیدی new استفاده می کنیم، این کار باعث می شه که یه ارجاع به کلاس ایجاد بشه. وقتی بخوایم از این شی کپی ایجاد کنیم، دو راه داریم.

1- به شکل زیر از عملگر انتصاب استفاده می کنیم.
PHP:
$obj1=new myClass();
$obj2=$obj1;

2- از __clone استفاده می کنیم.
PHP:
$obj1=new myClass();
$obj2=$obj1->__clone();

لطفا بگید که چرا باید از clone استفاده کنیم؟

همچنین لطفا بگید که مزایای استفاده از ارجاع چیه که هنگام ایجاد شی، بجای کپی یک ارجاع به کلاس در متغیر obj1 ذخیره می شه؟
 

moein7tl

Member
فکر کنم (اگه اشتباه می گم بگید:دی) توی php4 روش اول رو که می زنی کار می کنه.یعنی یه شی دیگه درست می کنه و همون صفت هارو می ریزه توش.ولی توی php5 فقط یه آدرس reference جدید به همون شی درست می شه. یعنی دومی رو هم که تغییر بدی اولی تغییر می کنه.
ولی وقتی از clone استفاده می کنه یه شی جدید درست می شه و همون مشخصات توش کپی می شه.
PHP:
$obj2 = clone $obj1;
 

جدیدترین ارسال ها

بالا