• 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
تفاوت بین include و extends در oop
#1
با سلام

دوستان تفاوت 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();
}

}


چه فرقی میکنه که یک کلاس رو اینکلود کنی و استفاده کنی یا اینکه ارث بری کنی ؟؟
  پاسخ
تشکر شده توسط :
#2
عبارت extend مربوطه به مباحث شئ گرایی و برای ارث بری از یک شئ دیگه استفاده می شود اما با دستور include شما فایل پی‌اچ‌پی دیگری را در فایل جاری اینکلود می کنید، انگار که کدهای اون فایل را همونجا نوشته اید و بیشتر جهت بالا رفتن خوانایی برنامه و دسته بندی توابع و... استفاده می شود.
سالهــــا مـــــى گــــــذرد، حادثه ها مى آید
انتظـــــار فـــــــرج از نیمـــــه خــــــرداد کشم

[عکس: ShowPicture.aspx?ID=52750d12-5d92-4286-9...height=100]
  پاسخ
تشکر شده توسط : ImanAzadi
#3
دوست عزیز میدونم مربوط به شی گرایی میشه
استفاده از کلاس تو مثال بالا خودش نشون از شی گرایی بودن داره
ولی تو همون شی گرایی هم تا فایل رو اینکلود نکنی نمیتونی ارث بری کنی
  پاسخ
تشکر شده توسط :
#4
فکر کنم مثال رو کمی اشتباه/تودرتو نوشتی... ولی در کل فکر نمی کنم تفاوت چندانی داشته باشن، چون در جای خودشون مفید/مضر هستند. مگر اینکه قرار باشه از الگوی خاصی در تولید نرم افزارات پیروی کنی

ولی سوال جالبه... فقط چند تا نکته رو بگم:
هردو متدها و پروپرتی هارو در یک کلاس mix می کنن

include دستوری مربوط به عملیات فایل هستش - که سرعتش هم نسبت به extends کمی بیشتره
extends قابلیتی مربوط به عملیات کلاس هستش

Include کردن کلاس با ساخت instance ای از کلاس B آغاز میشه و کاملاً کلاس B و A مستقل از هم هستند. و نمیتونه درجا هرتاثیری که بخواد روی کلاس B بزاره
کد پی‌اچ‌پی:
include_one 'FoodClass.php'

class CarClass
{
   new 
FoodClass();

Extend کردن کلاس با merge کردن کلاس B و A آغاز میشه. یا درواقع برند جدیدی رو ازش تولید می کنه. که میتونه درجا هرتاثیری که بخواد روی کلاس B بزاره
کد پی‌اچ‌پی:
class Sony extends LG
{
   function 
Foroosh()
   {
   }


Extend کردن بسیار flexible هست - بخاطر overriding و...
Include کرن محدوده و overriding هم نداره
همین.


درضمن از اونجایی که کلاسها معمولاً حاوی دیتا نیستن و ثابت هستند، استفاده از require_once یا include_once به صرفه تره...
همچنین دستواتی مثل include, echo, require, exit و... تابع نیستند، بلکه language construct هستند پس نباید درش از پرانتز استفاده بشه.
وبلاگ: Yousha.Blog.ir

صدام: "اگر با ارتش شاه ایران طرف بودیم، یک ماهه جنگ را می بردیم"
http://gulfnews.com/opinion/thinkers/ira...i-1.500997
  پاسخ
تشکر شده توسط : Reza ImanAzadi sara147
#5
نقل قول:همچنین دستواتی مثل include, echo, require, exit و... تابع نیستند، بلکه language construct هستند پس نباید درش از پرانتز استفاده بشه.

دوست عزیز اینو متوجه نشدم ؟؟؟ منظورتون چیه نیاید از پرانتز استفاده کرد ؟؟؟ مگه exit یا include بدون پرانتز کار میکنه
  پاسخ
تشکر شده توسط :
#6
(۱۳۹۴ مهر ۱۵, ۰۷:۳۵ ب.ظ)Y.P.Y نوشته: ...
کد پی‌اچ‌پی:
class Sony extends LG
{
   function 
Foroosh()
   {
   }


Extend کردن بسیار flexible هست - بخاطر overriding و...
Include کرن محدوده و overriding هم نداره
...
مهندس درباره این تکه کدی که گفتید، بالاخره کلاس پدر باید یه جایی باشه که بشه ازش اکستند کرد. الان این جا باید یا بالاتر کلاس پدر تعریف شده باشد یا با همون include فایل مربوط به کلاس پدر در این فایل وارد شود. درسته؟
سالهــــا مـــــى گــــــذرد، حادثه ها مى آید
انتظـــــار فـــــــرج از نیمـــــه خــــــرداد کشم

[عکس: ShowPicture.aspx?ID=52750d12-5d92-4286-9...height=100]
  پاسخ
تشکر شده توسط :
#7
نقل قول:دوست عزیز اینو متوجه نشدم ؟؟؟ منظورتون چیه نیاید از پرانتز استفاده کرد ؟؟؟ مگه exit یا include بدون پرانتز کار میکنه
آره کار میکنه. چیز خاصی هم نیست، یک اصوله فقط.


نقل قول:مهندس درباره این تکه کدی که گفتید، بالاخره کلاس پدر باید یه جایی باشه که بشه ازش اکستند کرد. الان این جا باید یا بالاتر کلاس پدر تعریف شده باشد یا با همون include فایل مربوط به کلاس پدر در این فایل وارد شود. درسته؟
بالاتر تعریف شده. مثلاً Angel
وبلاگ: Yousha.Blog.ir

صدام: "اگر با ارتش شاه ایران طرف بودیم، یک ماهه جنگ را می بردیم"
http://gulfnews.com/opinion/thinkers/ira...i-1.500997
  پاسخ
تشکر شده توسط : shgninc


پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان