جستجو در بخش : سوال جواب منابع اسلامی لغت نامه ها قوانین و مصوبات نقل قل ها
×

فرم ورود

ورود با گوگل ورود با گوگل ورود با تلگرام ورود با تلگرام
رمز عبور را فراموش کرده ام عضو نیستم، می خواهم عضو شوم
×

×

آدرس بخش انتخاب شده


جهت کپی کردن میتوانید از دکمه های Ctrl + C استفاده کنید
رویداد ها - امتیازات
در حال بارگذاری
×

رویداد ها - امتیازات

برای بررسی عملکرد فعالیت و امتیازات خود باید در وب سایت وارد باشید. در صورت عضویت از بخش بالای صفحه وارد شوید، در غیر این صورت از دکمه پایین، مستقیم به صفحه ثبت نام وارد شوید.

×
×
×

دلیل درخواست بستن پست

کلیه پست هایی که جنبه تبلیغاتی داشته، محتوای اسپم و بی مفهوم در این دسته قرار میگیرند. همچنین پست هایی که به منظور گرفتن بک لینک درج می شوند شامل این مورد هستند.
حاوی مفاهیم غیر اخلاقی، سیاسی و یا توهین آمیز. کلیه پست هایی که از نظر محتوایی نیاز به بررسی و یا حذف شدن دارند در این دسته قرار می گیرند.
محتوایی با عدم جزئیات کافی و مورد نیاز. کلیه پست هایی که منظور نویسنده به وضوح مشخص نیست و نیازمند توضیحات و جزئیات بیشتر می باشند در این دسته قرار می گیرند.
محتوایی بی ربط با موضوعیت سرفصل کلی. کلیه پست هایی که از منظر مفهوم و مضمون ارتباطی با عنوان اصلی سوال ندارند در این دسته قرار می گیرند.
محتوایی دلخواه و بر پایه سلیقه. کلیه پست هایی که یک پاسخ مشخص ندارند و متوانند چندین پاسخ متفاوت و صحیح داشته باشند که کاملا مبتنی بر نظر شخصی افراد هستند در این دسته قرار می گیرند.
محتوایی در حوزه خیلی وسیع. کلیه پست هایی که از نظر محتوایی در یک حوزه ی وسیعی قرار دارند و مشخصا به یک موضوع خاصی اشاره ندارند که پاسخدهی به آن ها مستلزم تشریح مفاهیمی کلی می باشند در این دسته قرار می گیرند.
قبلا در لام تا کام مطرح شده. پست هایی که دقیقا با همین محتوا و مضمون قبلا در وب سایت لام تا کام درج شده اند، با ذکر آدرس منبع تکراری با پست حال حاضر شامل این دسته هستند. تکراری است با:
به سایر دلایل، نیازمند به بررسی توسط مدیر. به هر دلیل غیری که پست را نیازمند بررسی توسط مدیر کرده، با ذکر دلیل، در این دسته قرار میگیرد.
ارسال رای بستن

چرا تغییرات در یک کلاس بر روی کلاس دیگری هم تاثیر می گذارند؟


0
0
919

لطفا به این قطعه کد دقت کنید:

class myclass1 {
    public $myvariable;
}

$obj1 = new myclass1;
$obj2 = $obj1;

$obj1->myvariable = 'something';
echo $obj2->myvariable; //=> something

همانطور که میبینید من محتوای شیء کلاس 1 رو تغییر دادم و نهایتا شیء 2 رو چاپ کردم ولی به طرز عجیبی اون هم تغییر کرده؟ کسی دلیلش رو می دونه و اینکه چطور می تونیم 2 تا کلاس کاملا جدا گانه داشته باشیم که روی هم تاثیر نذارن و در صورتی که کلاس دوم از روی کلاس اول ساخته شده؟

با تشکر، زبان کد هم php هست ممنون.

علمی برنامه-نویسی پی-اچ-پی
سوال شده در سعید مرادی
1933 امتیاز

500 کاراکتر باقی مانده

1 جواب

3

اگه خیلی مختصر و مفید بخوام جواب بدم باید بگم که این تصویر رو ببین:

نحوه تاثیر گذاری کلاس ها در پی اچ پی

همانطور که میبینید، به صورت پیش فرض وقتی شما با استفاده از new یک کلاس میسازی و اونو توی چندین متغییر جداگانه بریزی، در واقع همشون یک کلاس هستن و هر تغییری که بدی توی تمامشون ایجاد میشه. چرا در واقع اون کلاس توی یک بلاک مشخص از رم تغریف شده و همه ی متغییرها دارن به همون بلاک اشاره می کنه. به این حالت می گن pass by reference. حالت دومش (اگه می خوای بتونی 2 تا کلاس کاملا جدا گانه داشته باشید که روی هم تاثیر نذارن و در صورتی که کلاس دوم از روی کلاس اول ساخته شده، باید از clone استفاده کنی. کاری که clone انجام میده اینه که میاد یک بلاک جدید روی رم ایجاد می کنه از اون کلاس و از اون موقع به بعد می تونی مستقیما value رو تغییر بدی بدون اینکه تاثیری بزاری روی کلاس اول. به این حالت هم میگن pass by value.

جواب داده شده در سجاد شفی زاده <m>★</m>
11.1k امتیاز

1
اون عکس git عالی بود ممنون کاملا متوجه شدم. ــ سعید مرادی در 6 سال قبل

500 کاراکتر باقی مانده


جواب شما
     
.....
×

×

جعبه لام تا کام


لام تا کام نسخه صفحه کلید نیز راه اندازی شده است. شما با استفاده از کلیدهای موجود بر روی صفحه کلید دستگاهتان می توانید با وب سایت ارتباط برقرار کنید.
لیست کلید های میانبر

تبلیغات توضیحی


داپ اَپ اولین پلتفرم کش‌بک در ایران
اگه میخوای از خریدهایی که میکنی، پاداش نقدی دریافت کنی داپ اَپ رو نصب کن.

تبلیغات تصویری