mehdivlpr
5 سال پیش توسط mehdivlpr مطرح شد
4 پاسخ

پی اچ پی فانکشنال یا شی گرا

سلام من در حال یادگیری PHP فانکشنال هستم. هدف اصلی من در مرحله اول ساخت یک سایت بخصوص هست که توی این سایت کاربران یک سری اطلاعات رو ثبت و یک سری اطلاعات رو استخراج می کنند. اعضای سایت هم نهایتا ۱۰ یا ۱۵هزار نفر خواهند بود. برای ساخت چنین سایتی لازم هست که از مبحث شی گرایی استفاده شود یا خیر؟ در واقع میخوام بدونم بعد از فراگیری پی اچ پی فانکشنال سایت خودم رو بسازم یا حتما قبلش شی گرایی رو کار کنم؟


ثبت پرسش جدید
Reza Jashnsaz
تخصص : مهندس نرم افزار
@rezajashnsaz0011 5 سال پیش مطرح شد
0

شما بدون شی گرایی هم میتونید بزنید همچین پروژه ای رو
ولی شی گرایی و mvc و فریمورک باعث میشه کارتون خیلی راحتتر و تمیزتر باشه


علی بیات
تخصص : توسعه دهنده ارشد وب
@ali.bayat 5 سال پیش مطرح شد
1

هر چقدر پروژه بزرگتر و پیچیده تر میشه.. نیاز به شئ گرایی بیشتر احساس میشه

به علاوه باید به مسائلی مثل Software maintenance و Code Readability هم دقت کرد.

کدی که می‌نویسید باید قابل نگهداری باشه. یعنی اگر خودت قرار شد بعد از ۶ ماه، یکسال دوباره روش کار کنی.. نباید به مشکل بخوری.. باید از ابتدا جوری طراحی کنی که هم خوانا باشه و هم نیاز به تغییر چندانی نداشته باشه.


یک مثال:
فرض کن باید اطلاعات رو Cache کنی.. و در ابتدا ۲ تابعی مینویسی

  • یکی داده هارو میذاره داخل کَش putCache
  • یکی داده ها رو میگیره getCache
    داخل این ۲ تابع، شما از مکانیزم ذخیره کردن این داده ها در یک فایل استفاده میکنی (ساده ترین روش)

همه چی خوبه و پروژه رو به رشده
در مرحله ای شما متوجه میشی استفاده از مکانیزم کش کردن در فایل ها، دیگه مناسب پروژه شما نیست.
و مثلا باید از Redis استفاده کنی
برای عوض کردن فانکشنلیتی ها، شما باید برگردی اون ۲ تا تابع رو ویرایش کنی.
و عوض کردن ساختار این ۲ تابع ممکنه بخش های دیگه ای (توابع دیگه، حلقه ها) رو که به اونها وابسته هستند، تحت شعاع قرار بده.. پس قسمت های زیادی رو برای ویرایش دارید

در حالی که میتونی از شئ گرایی استفاده کنی..
یه Interface میسازی
و سیستم رو جوری طراحی کنی که درایور های مختلف رو پشتیبانی کنه:

  • درایور فایل (ذخیره کردن اطلاعات کش داخل فایل)
  • درایور آرایه (ذخیره کردن اطلاعات کش داخل آرایه)
  • درایور Redis (ذخیره کردن اطلاعات کش در Redis)
  • و هر درایور دیگه که لازم باشه ...

حالا تنها کاری که باید برای عوض کردن مکانیزم انجام بدی، عوض کردن یه مقدار در configuration هست (که بهش بگی از چه درایوری استفاده کنه)

و این دقیقا کاری هست که فریم‌ورک لاراول انجام داده..

به این ترتیب برای Cache کردن داده ها، سیستم شما میدونه که باید از یک مکانیزمی استفاده کنه... اما چه مکانیزمی رو نه.. (یعنی فقط یه قالب کلی رو میفهمه که باید ازش تبعیت کنه)
که نهایتا فایدش اینه که شما دیگه نیازی به تغییر دادن کدهات نداری. اگر ۲ روز بعد قرار شد از یه سیستم دیگه‌ای برای کش کردن استفاده کنی.. مثلا memcached .. تنها کاری که باید بکنی اینه که یه درایور memcached بسازی... و در نتیجه کدهای شما قابل نگهداری هستند. و مجبور نیستید برای هر ویژگی جدید کدهاتون رو ویرایش کنید


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


ronald
@crireal5 5 سال پیش مطرح شد
0

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


mehdivlpr
تخصص : مهندس عمران
@mehdivlpr25 5 سال پیش مطرح شد
0

خیلی از توضیحات دوستان عزیز سپاسگزارم
من واقعا یک تازه کار هستم که رشته تحصیلیم هم متفاوت هست ولی بی نهایت به برنامه نویسی علاقه دارم و همینطور یک ایده در رشته خودم دارم
الان مقداری html و css خوندم و همینطور bootstrap برای UI و php در حد طراحی سیستم لاگین رجیستر کوءری زدن و دستورات کاربردی MySQL و احساس میکنم میتونم سایت رو طراحی کنم. از شما اساتید گرامی چند سوال داشتم :

  • با توجه به اینکه من اخیرا یادگیری رو در این حد تمام کردم مثل دانشجویان تازه فارغ التحصیل این احساس رو دارم که شاید چیزای مهم دیگه ای وجود داشته باشه که برای طراحی چنین سایتی نیاز داشته باشم ولی بی خبر باشم. اگر مسءله ای مدنظر دوستان هست لطفا راهنمایی کنن
  • خواستم ببینم با توجه به اینکه یک پروژه طراحی سایت شامل طراحی همزمان در زمینه های متفاوت هست مثل طراحی ظاهر گرافیکی سایت طراحی footer header sidebar navigation ساخت دیتابیس ها و ... اگر آموزشی در زمینه نقشه راه و یا الگوریتم مدیریت ساخت وبسایت وجود داره معرفی بفرمایید.

برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام