• 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
تفاوت بین اینکلود کردن یا مشتق کردن در شی گرایی
#1
با سلام
در یک کلاس چه فرقی میکنه که یک کلاس رو اینکلود کنی یا از همون کلاس اینکلود شده مشتق کنی
توضیح :
من در یک فایل ، کلاسی برای دیتابیس نوشتم
در یک فایل دیگر میخوام کلاس pagination بنویسم برای اینکار هم باید از کلاس دیتابیس استفاده کنم
راه اول اینه که بیام فایل کلاس دیتابیس رو در کلاس pagination اینکلود کنم و در تمامی قسمت ها جهت استفاده از توابع کلاس دیتابیس از this$ استفاده کنم
راه دوم اینه که بیام فایل کلاس دیتابیس رو در کلاس pagination اینکلود کنم و در کلاس pagination رو از کلاس دیتابیس extends کنم و از توابع کلاس دیتابیس بصورت parent:: استفاده کنم


چه فرقی میکنه مشتق کنی یا اینکلود ؟؟؟
  پاسخ
تشکر شده توسط :
#2
سلام
اینکلود که فقط باعث میشه شما بتونید از محتویات فایل دیگر در یه فایلی استفاده کنید و ارتباط مستقیمی به کلاس یا مشتق گیری نداره
اگه منظورتون چیز دیگری است لطفا با مثال بیان کنید
  پاسخ
تشکر شده توسط :
#3
شما وقتی یک کلاس (یا فایل) رو در کلاس (یا فایل) دیگه اینکلود می کنید در واقع دارید تمامی کدها و توابع مربوط به اون رو تو فایل جدید لود می کنید و این یه سر باره اضافی به برنامتونه پس روش بهینه اینه که از ارث بری استفاده کنید که هرجایی که لازم باشه تابعی لود بشه ...
  پاسخ
تشکر شده توسط : arexwallpaper
#4
در جواب دوستمون poor.cooder
فکر کنم اشتباه عرض میکنید
جهت ارث بری کلاس فرزند از کلاس پدری که در فایل جداگانه دیگری می باشد باید فایل کلاس پدر اینکلود بشه در غیر اینصورت که نمیتوان مشتق کرد
  پاسخ
تشکر شده توسط :
#5
ارث بری زمانی استفاده میشه که یک کلاس والد در index اصلی سایت اینکلود میشه و متدهای اصلی و پایه رو داخلش تعریف میکنند. بعد هر کلاسی که اینکلود میکنیم و میخواهیم استفاده کنیم از اون کلاس و متدهاش استفاده میکنند و نیازی به تعریف مجدد کلاس نیست.
در واقع وقتی ما مثلا 20 تا کلاس مختلف داریم دیگه نیازی نیست برای هرکدوم کلاس رو اینکلود کنیم و در ضمن از متدهای اصلی و متداول که در کلاس والد تعریف شده هم به راحتی کلاسهای فرزند استفاده خواهند کرد.

زمانی هم از اینکلود و ساخت شی از کلاس داخل یک کلاس دیگه استفاده میکنیم که اون کلاس صرفا در چند کلاس برای استفاده های خاص استفاده خواهند شد.

مثلا ما یک کلاس دیتابیس داریم. این کلاس چون یک کلاس اصلیه و همه کلاس ها به اون نیاز دارند اون رو در کلاس والد تعریف میکنیم و زمانی که کلاسی از کلاس اصلی ارث برد میتونه به راحتی از این کلاس استفاده کنه.

زمانی هم ما یک کلاس مثل کلاس آپلود فایل داریم که همه کلاس ها به اون نیازی ندارند. این کلاس صرفا در چند کلاس استفاده میشند و نیازی نیست که اون رو در همه جا لود و استفاده کنیم.

کلا این تفاوت ها در الگوی برنامه است که خودش رو نشون میده.
میثم محمودی | انجمن کد ایگنایتر فارسی
--------------------------
هرگز نمي توان با آدمهاي کوچک کارهاي بزرگ انجام داد
  پاسخ
تشکر شده توسط :
#6
دوست عزیز
فایل و فولدر یندی (include) یک برنامه یه مبحث جدا از ارث بری و روابط اشیا هست.
استاندارد هایی تعریف شده که با ترکیب این دو بحث به مهندسی برنامه کمک فراوارنی می کنه!
برای PHP فرقی نمی کنه که شما برنامه ایی که نوشتید از چندفایل استفاده کرده اید؛ از یک فایل یا یک هزار فایل. در هر صورت PHP برنامه رو اجرا می کنه
شما با فایل بندی کدها به مهندسی برنامه خود کمک کرده اید.
طبیعتآ وقتی شما بخشی از برنامه رو در یک فایل جداگانه نگه می دارید برنامه باید این قسمت از کد ها زمانی که بهش احتیاج پیدا می کنه یه جریان برنامه اصلی ضمیه (include) می کنه.

به شما توصیه می کنم ابتدا PHP رو بدون شی گرایی بیاموزید و برنامه ایی در همین سطح توسعه بدید
سپس شی مباحث مربوط به شی گرایی رو مطالعه کنید و فرا بگیرید.
  پاسخ
تشکر شده توسط : Reza M.J
#7
نقل قول:1
تفاوت بین اینکلود کردن یا مشتق کردن در شی گرایی
رابطه بین اینکلود کردن و ارث بری کردن
مثل رابطه بین پیچ و مهره به ماشین با وصل کردن پمپ بنزین به انژکتور میمونه (خودمم نفهمیدم چی گفتم Big Grin)
اینکلود کردن یعنی وصل کردن ، اضافه کردن اما هیچ قانونی لازم نیست اجرا بشه .
ارث بری یعنی براساس یک سری قانون چیزهایی که وصل کردی رو پیاده کنی و به هم ربط بدی Smile
در کل دو تا مفهوم هستن که توی یک دسته قرار نمیگیرن
نصیحت داش محمد رو جدی بگیرید
نقل قول:1
تفاوت بین اینکلود کردن یا مشتق کردن در شی گرایی
وبلاگ rezaonline.net/blog
سفارش برنامه نویسی reza.biz
Php , mysql , postgresql , redis , Yii and ... Cool
  پاسخ
تشکر شده توسط :
#8
نقل قول:رابطه بین اینکلود کردن و ارث بری کردن
مثل رابطه بین پیچ و مهره به ماشین با وصل کردن پمپ بنزین به انژکتور میمونه ...
آره واقعآ ... Smile
  پاسخ
تشکر شده توسط :


پرش به انجمن:


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