سلام من در حال یادگیری PHP فانکشنال هستم. هدف اصلی من در مرحله اول ساخت یک سایت بخصوص هست که توی این سایت کاربران یک سری اطلاعات رو ثبت و یک سری اطلاعات رو استخراج می کنند. اعضای سایت هم نهایتا ۱۰ یا ۱۵هزار نفر خواهند بود. برای ساخت چنین سایتی لازم هست که از مبحث شی گرایی استفاده شود یا خیر؟ در واقع میخوام بدونم بعد از فراگیری پی اچ پی فانکشنال سایت خودم رو بسازم یا حتما قبلش شی گرایی رو کار کنم؟
شما بدون شی گرایی هم میتونید بزنید همچین پروژه ای رو
ولی شی گرایی و mvc و فریمورک باعث میشه کارتون خیلی راحتتر و تمیزتر باشه
هر چقدر پروژه بزرگتر و پیچیده تر میشه.. نیاز به شئ گرایی بیشتر احساس میشه
به علاوه باید به مسائلی مثل Software maintenance و Code Readability هم دقت کرد.
کدی که مینویسید باید قابل نگهداری باشه. یعنی اگر خودت قرار شد بعد از ۶ ماه، یکسال دوباره روش کار کنی.. نباید به مشکل بخوری.. باید از ابتدا جوری طراحی کنی که هم خوانا باشه و هم نیاز به تغییر چندانی نداشته باشه.
یک مثال:
فرض کن باید اطلاعات رو Cache کنی.. و در ابتدا ۲ تابعی مینویسی
همه چی خوبه و پروژه رو به رشده
در مرحله ای شما متوجه میشی استفاده از مکانیزم کش کردن در فایل ها، دیگه مناسب پروژه شما نیست.
و مثلا باید از Redis استفاده کنی
برای عوض کردن فانکشنلیتی ها، شما باید برگردی اون ۲ تا تابع رو ویرایش کنی.
و عوض کردن ساختار این ۲ تابع ممکنه بخش های دیگه ای (توابع دیگه، حلقه ها) رو که به اونها وابسته هستند، تحت شعاع قرار بده.. پس قسمت های زیادی رو برای ویرایش دارید
در حالی که میتونی از شئ گرایی استفاده کنی..
یه Interface میسازی
و سیستم رو جوری طراحی کنی که درایور های مختلف رو پشتیبانی کنه:
حالا تنها کاری که باید برای عوض کردن مکانیزم انجام بدی، عوض کردن یه مقدار در configuration هست (که بهش بگی از چه درایوری استفاده کنه)
و این دقیقا کاری هست که فریمورک لاراول انجام داده..
به این ترتیب برای Cache کردن داده ها، سیستم شما میدونه که باید از یک مکانیزمی استفاده کنه... اما چه مکانیزمی رو نه.. (یعنی فقط یه قالب کلی رو میفهمه که باید ازش تبعیت کنه)
که نهایتا فایدش اینه که شما دیگه نیازی به تغییر دادن کدهات نداری. اگر ۲ روز بعد قرار شد از یه سیستم دیگهای برای کش کردن استفاده کنی.. مثلا memcached .. تنها کاری که باید بکنی اینه که یه درایور memcached بسازی... و در نتیجه کدهای شما قابل نگهداری هستند. و مجبور نیستید برای هر ویژگی جدید کدهاتون رو ویرایش کنید
در کنار مزایای بالا .. چون شما از یه سری روش های استاندارد استفاده کردید، اگر قرار باشه شخص دیگه ای هم بیاد روی این پروژه کار کنه با یه نگاه به ساختار کلاس ها متوجه میشه که چی به چیه.. و نیاز نیست بره هزاران تابعی رو که ما نوشتیم بررسی کنه و ببینه هر کدوم چند تا آرگومان میخواند و نوعشون چی هست و چی رو برمیگردونند... پس کدهای ما خوانا میشه.
حتما شی گرایی رو تو پروژتون استفاده کنین حتی اگر فقط از مفاهیم ابتدایی شی گرایی هم استفاده کنین باز هم خوبه چون هم به درک عمیقتری از مفهوم شی گرایی میرسین هم اینکه متوجه مزایای اون میشین که انگیزتون رو برای یادگیری کاملتر اون بالا میبره.
خیلی از توضیحات دوستان عزیز سپاسگزارم
من واقعا یک تازه کار هستم که رشته تحصیلیم هم متفاوت هست ولی بی نهایت به برنامه نویسی علاقه دارم و همینطور یک ایده در رشته خودم دارم
الان مقداری html و css خوندم و همینطور bootstrap برای UI و php در حد طراحی سیستم لاگین رجیستر کوءری زدن و دستورات کاربردی MySQL و احساس میکنم میتونم سایت رو طراحی کنم. از شما اساتید گرامی چند سوال داشتم :
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟