ارث*بری یکی از قابلیت*های اساسی در [برای نمایش لینک باید عضو شوید. ] شیءگرا محسوب می*شود و با استفاده از آن می*توانید از یک کلاس به عنوان ساختار پایه برای کلاس*های دیگر بهره ببرید.

چرا باید این*کار را انجام دهیم؟ زیرا این عمل به شما اجازه می*دهد تا به صورت بهینه*تری از کدهای نوشته* شده*ی قبلی خود و نیز کدهای نوشته شده توسط دیگران، برای پیشبرد پروژه بهره ببرید.

فرض کنید که قصد ایجاد یک کلاید جدید به نام employee (کارمند) را دارید. از آنجا که هر کارمند یک شخص نیز است، بنابراین این دو می*توانند پروپرتی*ها و متدهای مشترکی داشته باشند.

آیا این روش منطقی به نظر می*رسد؟

با استفاده از ویژگی*های ارث*بری می*توانید کد کمتر و بهینه*تری را تولید کنید چراکه فقط موارد اضافه را باید به کلاس جدید اضافه کنید و در واقع می*توان از ویژگی*های یک کلاس دیگر به منظور ساخت کلاس جدید در پی*اچ*پی بهره گرفت. دو عامل زیر از جمله دلایلی تلقی می*شوند که باعث شده استفاده از ارث*بری در کلاس*های پی*اچ*پی منطقی به نظر برسد.

شما فقط یک بار باید کد مورد نظرتان را بنویسید.
کد اولیه و اصلی مجددا استفاده خواهد شد و می*توان از آن در هر تعداد کلاس دیگر، استفاده کرد.
از نظر مفهومی ارث*بری شبیه به عملیات Include کردن است که در جلسات قبل به صورت مفصل آن را توضیح داده بودیم.

نگاهی به کد پی*اچ*پی زیر بیاندازید و با دقت آن را بررسی کنید.

// 'extends' is the keyword that enables inheritance
class employee extends person
{
function __construct($employee_name) {
$this->set_name($employee_name);
}
}
مرحله*ی نوزدهم:
استفاده مجدد از کدها با استفاده از ویژگی ارث*بری*: بخش دوم

از آنجا که کلاس employee بر پایه*ی کلاس person ایجاد شده است، بنابراین کلاس employee به طور خودکار تمامی متدهای عمومی و محافظت*شده* و نیز تمامی پروپرتی*های عمومی و محافظت*شده*ی کلاس person را دارا خواهد بود.

نکته*ی اضافه: به عبارت دیگر می*توان گفت که کلاس employee در واقع نوعی دیگر از کلاس person است. به کد نمونه*ی زیر توجه کنید تا مطلب بیان شده را بهتر درک کنید.

class employee extends person
{
function __construct($employee_name){
$this->set_name($employee_name);
}
}
اما چگونه بدون اینکه متد ()set_name در کلاس employee تعریف شده باشد ما قادر به استفاده از آن خواهیم بود؟

پاسخ: زیرا ما قبلا متد ()set_name را در کلاس person تعریف کرده بودیم و با توجه به ویژگی* ارث*بری در پی*اچ*پی، کلاس جدید می*تواند از متدهای عمومی و محافظت*شده*ی کلاس پایه استفاده کند.

نکته: کلاس person در اینجا کلاس پایه یا کلاس والد خوانده می*شود زیرا کلاس جدیدی که به نام employee ساختیم، به عنوان ساختار پایه از کلاس person بهره گرفته است. سسله مراتب همیشه در پروژه*های مختلف [برای نمایش لینک باید عضو شوید. ] یک موضوع مهم است که باید به آن توجه ویژه داشته باشید. این امر به ویژه وقتی که پروژه*ی شما پیچیده*تر می*شود بسیار کارا خواهد بود.

مرحله*ی بیستم:
استفاده*ی مجدد از کدهای نوشته* شده: بخش سوم

همانطور که در کد زیر نیز مشاهده می*کنید، می*توانیم متد get_name را در کلاس employee فراخوانی کنیم. کد زیر یک مثال بسیار خوب برای فهم بیشتر این مبحث است.

<?phpinclude("class_lib.php"); ?>
<?php
// Using our PHP objects in our PHP pages.
$mojtaba = new person("mojtaba bolhasani");
echo "mojtaba's full name: " . $mojtaba->get_name();

$miaad = new employee("miaad baferasat");
echo "---> " . $miaad->get_name();
?>
در مثال بالا روش استفاده*ی مجدد از کدهای نوشته شده با ساختار OOP را مشاهده می*کنید. یعنی شما دیگر نیازی به نوشتن مجدد برخی از متدها نخواهید داشت و می*توانید از متدهای کلاس پایه یا والد، بهره ببرید. این روش باعث می*شود تا کد نوشته* شده*ی شما به اصطلاح ماژولار شده و قابلیت توسعه و پیشرفت دادن آن بیشتر شود. همچنین ساختار کدها منسجم*تر شده و نیاز به نوشتن کد کمتری خواهید داشت.
در این مطلب و سه مطلب قبلی از سری [برای نمایش لینک باید عضو شوید. ] در زومیت به موارد پایه*ای اساسی برای یادگیری [برای نمایش لینک باید عضو شوید. ] پرداختیم. اما به منظور راحتی بیشتر در این مبحث و اینکه در همین مسیر برنامه*نویسی را ادامه دهید باید سعی کنید جزئیات و اطلاعات بیشتری را در مورد ساختار و روش برنامه*نویسی شیءگرا فرا بگیرید.
به یاد داشته باشید بهترین راهی که می*تواند به شما در یادگیری این روش کمک کند، مثل همیشه نوشتن کد و تمرین است.
به عنوان مثال پیشنهاد می*کنیم چند کلاس عمومی برای خود ایجاد کنید. این کلاس*ها باید شامل متدهایی باشد که فکر می*کنید در چند پروژه مختلف مورد استفاده واقع خواهند شد. پس از نوشتن چند نمونه کلاس و یادگیری مراحل توضیح داده شده از جلسه بیست*ویکم تا بیست*وچهارم، مطمئنا کدنویسی به روش OOP برای شما آسان*تر و بسیار بهتر خواهد شد.
منابع:[برای نمایش لینک باید عضو شوید. ] [برای نمایش لینک باید عضو شوید. ]