PDA

View Full Version : سوال در مورد ارجاع $this ???



reza-alborz
پنج شنبه 30 خرداد 1392, 08:08 صبح
سلام دوستان

من تو سورس یک برنامه ای با این کد به مشکل خوردم
میشه بگین یعنی چی


self::$id[$this->id] =& $this;
تا اونجایی که من خودم متوجه شدم یعنی متغیر استاتیک $id مقدارش هر وقت که یک شی از کلاس ایجاد بشه تغییر میکنه

MMSHFE
پنج شنبه 30 خرداد 1392, 08:17 صبح
این کد داره هربار به متغیر استاتیک id$ که یک آرایه است، یک خونه اضافه میکنه که اندیسش، فیلد id شئ جاری و مقدارش، یک ارجاع به شئ جاریه. اینطوری هرموقع بخواد میتونه شئ مربوطه رو با فراخوانی اندیسش از توی فیلد static پیدا کنه و هر کاری میخواد (حذف و...) باهاش انجام بده.

reza-alborz
پنج شنبه 30 خرداد 1392, 08:48 صبح
عذر میخوام آقای شهرکی

امکان داره یه خورده واضح تر یا با یک مثال کوچک بگین. تشکر

MMSHFE
پنج شنبه 30 خرداد 1392, 10:17 صبح
ببینید، یک فیلد static داریم به اسم id$ که بصورت یک آرایه تعریف شده. حالا هر شئ جدیدی که از کلاس ایجاد میشه، یک خونه جدید به این آرایه اضافه میشه که فیلد id$ اون کلاس (که استاتیک نیست)، بعنوان اندیسش بکار میره و مقدار اون خونه جدید، یک ارجاع به شئ جاری هست که الآن ایجاد شده. اینطوری اگه یک موقع خواستیم شئ با id برابر با 5 رو حذف کنیم، کافیه بگیم unset(ClassName::$id[5]); و چون این خونه، بخاطر وجود & بعد از مساوی، یک ارجاع به شئ ایجاد شده از کلاس با id مساوی 5 رو داشته (و نه یک کپی از اون رو)، دقیقاً همون شئ شماره 5 که ایجاد شده بوده، حذف میشه.