راکت

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

4 پاسخ

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

mehdivlpr
mehdivlpr
@mehdivlpr25
ثبت پرسش جدید

پاسخ‌ها

4
Reza Jashnsaz
Reza Jashnsaz
@rezajashnsaz0011

تخصص: مهندس نرم افزار

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

علی بیات
علی بیات
@ali.bayat

تخصص: توسعه دهنده ارشد وب

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

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

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


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

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

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

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

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

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

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

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


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

شاید پاسخ شما همین‌جا باشد

ronald
ronald
@crireal5

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

mehdivlpr
mehdivlpr
@mehdivlpr25

تخصص: مهندس عمران

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

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

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

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