Boplo.ir
rss

من در Facebook


جستجو


آخرین مطالب

مطالب همینجوری

بر و بچ

MyView TakhteShasi Tween

دوستشون دارم

بیلبورد

دامین برای فروش: CleanCode.ir
FastFeed.ir
Fonvi.com

تماس


انواع و اقسام سفارشات طراحی و برنامه نویسی سایت پذیرفته میشه. از سایت حمایت از خرگوشهای صورتی گرفته تا سایت قاچاق اعضای بدن!
تماس

 

از بيماران سرطاني حمايت كنيم

A new begining
AHHP presents

 

آدرس کوتاه: http://Boplo.ir/:52

دریافت member-variable از کلاس والد....
۱۰ اردیبهشت ۱۳۸۸ ساعت ۱۲:۵۴

پی اچ پی
یک نکته کوچیک از کلاسهای PHP

جدیدا متوجه شدم که اگر یک کلاسی، یک کلاس دیگه رو extend کنه، نمی تونه Propertyهای کلاس والد که static نیستند رو مستقیما بگیره. یعنی اینجوری جواب نمیده:

class childClass extends parentClass {
	.....
	$a = parent::memberVariable;
	.....
}

توی اینترنت گشتم چیزی جالبی پیدا نکردم ولی خودم یه روش باحال کشف کردم. برای گرفتن Property کلاس والد میشه یک متد توی کلاس والد ایجاد کرد که بیاد Property رو return کنه. مثل این:

class parentClass {
	.....
	function getProperty($property)
	{
		return $this->$property;
	}
	.....
}

حالا توی کلاس پایین دستی میتونید هر مشخصه ای رو از کلاس والد بگیرید (البته با مقدار کنونی)

class childClass extends parentClass {
	.....
	$a = parent::getProperty("memberVariable");
	// $a equals to parent::memberVariable
	.....
}
دلیل اینکه چنین قابلیتی تعریف نشده کاملا مشخصه. Propertyهای یک کلاس اگر static نباشند، بسته به متدهای کلاس تغییر می کنند و نمیشه با قطعیت مقدار نهایی ازشون گرفت.
 

تو چی فکر می کنی؟


پیام : روشه خوبیه
این موضوع واسه من هم سوال بود
(2 سال و 9 ماه و 10 روز و 5 ساعت و 59 دقیقه پیش)

محمد صالح : منم یک مشکلی مثل همین با کلاس هام داشتم، با خوندم مطلب شما بعد از کلی جستجو فهمیدم مشکلم از کجا بوده مرسی
(2 سال و 8 ماه و 6 ساعت و 59 دقیقه پیش)

محمد جعفر : من هنوز نفهمیدم توارث کلاس ها چه کاربردی داره؟
(1 سال و 6 ماه و 23 روز و 22 دقیقه پیش)

امیرحسین : فرض کنید میخوایم با برنامه نویسی ماشین پرنده بسازیم،
کدهایی برای ساختن ماشین داریم و کدهایی برای ساختن هواپیما. برای ساختن ماشین پرنده، باید خصوصیت حرکت روی زمین رو از ماشین و پرواز رو از هواپیما ارث بری کنیم که یک وسیله داشته باشیم که روی زمین مثل ماشین و در آسمان مثل هواپیما عمل کنه. اگر ارث بری و نادیده بگیریم وسیله ساخته شده میشه یک ماشین که روی سقفش یه هواپیماست و هر کدوم کار خودشون رو می کنند.
در برنامه نویسی، برای نمونه اگر بخوایم کدها رو توسعه بدیم و حجم کدها بالا باشه درست نیست که هر بخش، کدهای خودش رو داشته باشه و کار خودش رو بکنه چون اولا توی سیستمهای بزرگ خیلی کد مشابه داریم و در این حالت یه حجم بزرگی کد تکراری خواهیم داشت همچنین اگر بخوایم تغییر خاصی ایجاد کنیم باید همه جا رو تغییر بدیم ولی اگر از ارث بری استفاده کنیم، میتونیم کدهای تکراری رو یکبار ایجاد کنیم که بقیه جاها بجای اینکه خودشون اونها رو دوباره بسازند، ارث میبرند و اگر بخوایم تغییری در این کدهای تکراری بدیم کافیه کلاس اصلی رو تغییر بدیم تا همه جا اعمال شه.
در کل ارث بری، کنترل و یکپارچگی به کدها میده.
ارث بری فوائد دیگه ای هم داره که توی موارد خاص، نقش هوخشتره رو بازی می کنه (;
برای استفاده عملی ارث بری ، پیشنهاد می کنم یکی از فریم ورکها معروف مثل CakePHP یا CodeIgniter و غیره رو یاد بگیرید. اونجا کاملا میبینید که چرا و چطور از ارث بری استفاده خوب کردند.
(1 سال و 6 ماه و 22 روز و 4 ساعت و 26 دقیقه پیش)

محمد جعفر : سلام.
پاسخ شما رو در باره‌ی کاربرد ارث بری در کلاس ها خوندم و تغییرات اساسی در یکی از برنامه‌هام دادم.
فقط یه مساله کوچیک، من یک کلاس اصلی دارم که 10 تا(دقیقا ده تا :D) کلاس ازش extend شده اند، هر بار هم که از هرکدوم از این 10 تا اینستنس می‌گیرم، یک دور تابع سازنده کلاس اصلی صدا زده می‌شه که کار سنگینی هم می‌کنه، به دیتابیس وصل میشه، آپشن ها رو لود می‌کنه و توی یک آیرایه ذخیره می‌کنه، فایل زبان رو می‌خونه و توی یک آرایه میریزه و...
من میخوام که هر دفعه تابع سازنده کلاس اصلیه صدا زده نشه. یک اینستنس از اون کلاس اصلی می‌گیرم، بقیه از اون اینستنسه مشتق بشن. نمی‌دونم تونستم منظورمو برسونم.
چون تابع سازنده کلاس اصلی حد اقل یک بار باید صدا زده بشه ولی لازم نیست همه اون ده تا کلاس یک بار جداگونه تابع سازنده رو اجرا کنن.
(1 سال و 6 ماه و 8 روز و 3 ساعت و 28 دقیقه پیش)

حمید سلطانی : با سلام
دوست من اگر متغیرتون رو protected کنید،میتونید به صورت مستقیم استفاده کنید ازش.دیگه نیازی به این کارا نیست
(3 ماه و 4 روز و 5 ساعت و 20 دقیقه پیش)

 

me

امیرحسینم. اسمم رو دوست دارم، خودم رو دوست دارم. تهران زندگی می کنم. فارغ التحصیل مهندسی صنایع هستم. برنامه‌نویسی و طراحی وب می کنم. در واقع Web Developer محسوب میشم. برنامه نویسی و وقت گذرونی با وب تنها کاریه که خسته ام نمی کنه.
آدم خیلی سردی هستم، اینو دور و وری هام میگن. ولی به نظر خودم سرد نیستم در واقع گرمای خودم رو کم بروز می دم! آدما رو اغلب دوست دارم غیر از اون مواقعی که اونا من رو نادیده میگیرن!

این سایت رو بعد از کلی اینور اونور دوباره راه انداختم تا هرچی دوست دارم توش بنویسم، چه کسی بخونه چه نخونه.
خلاصه اینجا خونه منه،

به خونه امیرحسین خوش اومدی...

MODx | Template World