برنامه نویسی شیء گرا در PHP قسمت سوم :: ارث بری
|
04-20-2014, 06:40 PM
ارسال: #1
|
|||
|
|||
برنامه نویسی شیء گرا در PHP قسمت سوم :: ارث بری
در مقالات قبل با مقدمات شیء گرایی و نحوه دسترسی به اعضای یک شیء رو با هم بررسی کردیم.همینطور در مورد ارث بری توضیحات کمی دادم. تصمیم گرفتم در این مقاله به بحث ارث بری به طور مفصل بپردازم.
چرا ارث بری؟ اگر تجربه کار با برنامه نویسی شیء گرا رو نداشته باشید به احتمال زیاد این سوال براتون پیش اومده که چرا ارث بری یکی از مهمترین مباحث شیء گرایی محسوب میشه و چه مزیتهایی داره؟ از مزیتهای ارث بری در برنامه نویسی شیء گرا میشه به نکات زیر اشاره کرد : ۱- هنگامی که یک کلاس مینویسید ممکنه کلاسهای دیگری هم باشند که متدها و متغیرهای مشابهی باهم داشته باشند. بر این اساس از ارث بری برای کم کردن مقدار کدها استفاده میکنیم. ۲ – وقتی که چند کلاس فرزند از یک کلاس مادر ارث بری میکنن پیدا کردن خطاهای به وجود اومده بسیار راحتتره کلمه کلیدی extends برای ارث بری از کلمه کلیدی extends استفاده میکنیم. کد php: class Database همینطور که در مثال بالا میبینید کلاس Users از کلاس Database با استفاده از کلمه کلیدی extends ارث بری کرده. یعنی کلاس Users به متدها و متغیرهایی که به صورت public یا protected در کلاس Database تعریف شدن دسترسی داره. override کردن متدها و متغیر ها فرض کنید شما در کلاس مادر(پدر ، اصلی و هر چی دلتون میخواد بهش بگید) یک تابع داری با نام getName کد php: class Database حالا میخوایم یک کلاس فرزند ایجاد کنیم : کد php: class User extends Database در مثال بالا متد getName در هر دو کلاس وجود داره.هنگامی که کد زیر رو اجرا میکنیم نام کلاس فرزند رو در خروجی مشاهده میکنیم : کد php: $user = new Users(); مثال : یک کلاس دیتابیس رو در نظر بگیرید.این کلاس در سازنده (__construct) عمل اتصال به دیتابیس رو انجام میده : کد php: class Database کلاس بالا کلاس اصلی ماست که اتصال به دیتابیس رو در سازنده اش انجام دادیم. حالا فرض کنید که برای هر یک از جداول دیتابیس باید یک کلاس جدا بسازیم.کلاس Users رو در نظر بگیرید : کد php: class Users extends Database درسازنده کلاس Users با استفاده از کلمه کلیدی parent:: به سازنده کلاس اصلی دسترسی پیدا کردیم. اما اگر این کار رو انجام نمیدادیم به خاطر اینکه سازنده رو در کلاس فرزند دوباره نوشتیم سازنده کلاس مادر اجرا نمیشد.پس با استفاده از parent:: سازنده کلاس مادر رو فراخوانی کردیم تا عمل اتصال به دیتابیس به درستی صورت بگیره. کلمه کلیدی instanceOf در PHP 5 یک عملگر جدید با نام instanceOf معرفی شد. این عملگر چک میکنه که آیا دو شیء متعلق به بک کلاس هستند یا خیر. برای درک بیشتر مثال زیر رو ببینید : کد php: class Database در ارث بری هم میتونید از این عملگر استفاده کنید : کد php: class Users extends Database |
|||
|
کاربرانِ درحال بازدید از این موضوع: 2 مهمان