PDA

View Full Version : سوال: تفاوت بین include و extends در oop



IMANAZADI
چهارشنبه 15 مهر 1394, 09:30 صبح
با سلام


دوستان تفاوت include , extends چیه ؟


مثال زیر رو در نظر بگیرید

در فایل test.php یک متد به نام fff وجود دارد







include ("test.php");
class a{


private $r;


public function __construct()
{
$r=new b();
}


public function xxx()
{
$this->r->fff;
}


}


include ("test.php");


class c extends b{


public function xxx()
{
parent::fff();
}


}





چه فرقی میکنه که یک کلاس رو اینکلود کنی و استفاده کنی یا اینکه ارث بری کنی ؟؟

hamedarian2009
چهارشنبه 15 مهر 1394, 15:20 عصر
خب اینجوری دوتا آبجکت ایجاد میشه و بنابراین resource بیشتری مصرف میشه همچنین دیگه اون خاصیت سلسله مراتبی و کپسوله سازی که از مزایای شی گرایی هستند رو نخواهید داشت و با include به پراپرتی و متدهای protected دسترسی ندارین

IMANAZADI
پنج شنبه 16 مهر 1394, 05:32 صبح
خب برای ارث بری هم بلاخره باید فایل مورد نظر رو include کرد

hamedarian2009
پنج شنبه 16 مهر 1394, 15:24 عصر
خب برای ارث بری هم بلاخره باید فایل مورد نظر رو include کرد

نیازی نیست از auto loader استفاده می کنیم
http://php.net/manual/en/language.oop5.autoload.php

IMANAZADI
پنج شنبه 16 مهر 1394, 16:18 عصر
توی autoload هم از include استفاده میشه

hamedarian2009
پنج شنبه 16 مهر 1394, 20:03 عصر
توی autoload هم از include استفاده میشه
ضمیمه کردن فایل داخل یک فایل دیگه که باید انجام بشه اما با autoloader فقط کافیه یکبار این تابع رو تعریف کنید دیگه نیازی نیست هربار فایل کلاسی که می خواهید استفاده کنید رو ضمیمه کنید

توضیحات من در مورد استفاده از وراثت به جای ایجاد شی مستقیم در داخل کلاس مورد نظر بود