چرا فریم ورک؟
به این موضوع تا به حال توجه کردهاید که چرا کامپوننتها یا بستههای نصبی برخی از توسعهدهندگان PHP مفید میباشد؟ خب مشخصه که با این پکیجها و بستههای نصبی نگهداری از سرویسها و نحوهی کدنویسی ما بسیار ساده خواهد شد. چون شما به جای نوشتن توابع بدیهی فقط کافیست از آنها استفاده کرده و نرمافزار خود را توسعه دهید. البته لازم به ذکر است که هر بسته نصبی یا کامپوننتی معتبر نیست. این پیشنهاد را از بنده داشته باشید که استفاده از کامپوننتها تنها و تنها به حمایتکننده یا به اصطلاح Supporter آن کامپوننت و یا پکیج بستگی دارد.
حال فرض کنید که شما نرمافزاری را بدون استفاده از فریمورکها ایجاد میکنید. از کجا شروع خواهید کرد؟ بسیار خب، احتمالا در ابتدا باید تمام درخواستهای HTTP را مسیردهی کنید سپس نیاز دارید که تمامی کتابخانههای Request (درخواست) و Response (پاسخ) را کدنویسی کرده و آنها را در دسترس قرار دهید. ساخت یک روتر (Router)، وای خدای من چقدر سخت! باید یک روتر برای نرمافزار خود بنوسید و تنظیمات آن را مطابق با کتابخانهای که خودتان ایجاد کردهاید، تهیه کنید. حال این سوال برای شما پیش میآید که از چه سینتکس و ساختاری برای کتابخانههای روتر استفاده کنید؟ چه ساختاری برای روتر خود تعیین خواهید کرد؟ چگونه کنترلرهای خود را ایجاد میکنید؟ چطور تمامی صفحات را بارگذاری خواهید کرد؟ خب شاید سریعا پاسخ بدهید: با استفاده از تزریق وابستگیها مبحث کنترلرها را بهینه میکنم! اما به راستی این کارها چقدر زمان میبرد؟ اصلا فرض کنیم شما توسعهدهندهی بسیار قدری هستید و این سوالها برایتان پوزخندی بیش به ارمغان نمیاورد! اما یک درصد فکر کنید شما در یک کار گروهی شرکت کردهاید و مدیریت یک پروژه در اختیار شماست آیا هر آنچه در ذهن شما میگذرد نیز در ذهن سایر اعضای تیم خواهد گذشت؟! آیا مدت زمانی که بخواهید به آنها آموزش دهید که چگونه ساختار قانون مند ذهن شمارا اجرا کنند، در نظر گرفتهاید؟ آیا به این فکر کردهاید که ساخت یک فریمورک بومی که زاییدهی افکار حرفهای برنامهنویسی شماست چقدر زمان میبرد؟
بسیار خب پاسخ به سوالهای فوق را خودتان بدهید و ما به ادامهی توضیحات این مقاله میپردازیم.
با یک تیر ۱۰۰ نشان بزنید!
حال به این نکته توجه کنید که شما پس از بهرهمندی از فریمورک دیگر به سوالهای فوق نباید جواب دهید بلکه سوالات شما نمودی بهتر پیدا میکنند. مثلا: از چه کامپوننتی برای ارتباط با پایگاه داده استفاده کنم؟ از چه کامپوننتی برای نمایشگر خروجی خود استفاده کنم؟ و … . شما به مراتب سازگاری مناسبتری با فریم ورک خود ایجاد خواهید کرد. علاوه بر این، فریمورکها قوانین و قواعد خاصی را برای شما وضع میکنند تا خطای کدزنی و توسعه یک اپلیکیشن را کاهش داده و انسجام تیمی شما را حفظ کنند. بنابراین سازگاری تیمی شما نیز افزایش پیدا میکند چون وقتی شما یک پروژه لاراول ایجاد کردید و مثلا بحث روتینگ یا مسیردهی را کاملا متوجه شدید دیگر برای شما فرقی نمیکند که عنوان پروژه چیست! بلکه آنچه برای شما حائز اهمیت است سینتکس و ساختار مسیردهی در پروژههاست که یکسان میباشد. این یعنی با یک تیر ۱۰۰ نشان زدن!
برای هر تغییری انعطافپذیر باشید!
گاهی شما در یک تیم و مجموعهی برنامهنویسی مشغول به کار هستید، مدیر پروژه از شما درخواست میکند که مبحث کنترلر صفحهی لاگین را رها کرده و بخش ویو و کنترلر صفحهی محصولات که همکارتان تاکنون روی آن کار میکرده، ادامه و توسعه دهید. بسیار عالیه! شما یک توسعهدهندهی انعطافپذیر شدید زیرا به راحتی هر چه تمام تر میتوانید ادامهی کدهای همکارتان را نوشته و به توسعه نرمافزار بپردازید.
دلایلی که برای شما عزیزان ارائه کردیم مستند و بر اساس تجربهی کاری حاصل شده است لذا از توضیح بیش از اندازهی فواید استفاده از فریمورک پرهیز کرده و در ادامهی مقاله به صورت تیتروار برخی از اساسیترین دلایل استفاده از فریمورکها را شرح خواهیم داد:
- افزایش سرعت توسعه نرمافزارها
- تولید کدها و برنامههای سازماندهی شده جهت استفاده مجدد و نگهداری
- افزایش امنیت وب سایت برای خطاهایی سطح پایین
- استفاده از ساختار MVC (مخفف کلمات Model-View-Controller) رجوع شود به مقالهی آموزش MVC در PHP
- استفاده از ابزار مدرن برنامهنویسی تحت عنوان برنامهنویسی شیء گرایی (Object-Oriented-Programming)
و اما به این سوال هنوز پاسخ ندادهایم که از بین حدود ۱۰ الی ۱۵ فریمورک PHP چرا لاراول را انتخاب کردهایم؟ بسیار عالی، پاسخ به این سوال تنها زمانی مشخص خواهد شد که شما ویژگیهای کلیدی این فریمورک را مطالعه کنید. البته در این مقاله از مقایسهی فریمورکهای PHP خودداری میکنیم چون این مقایسه هیچگاه نتیجهی دلچسبی نخواهد داشت.
- هستهی توسعهپذیر و سریع
- مسیردهی (routing) ساده و تمیز
- سیستم تایید هویت کاربری خودکار (Authentication)
- سیستم ACL حرفهای و پیشرفته
- استفاده از مفهومی به نام Eloquent برای برقراری ارتباط بین مدل و پایگاه داده
- دارای کلاسها و توابع بسیار متنوع
- شیءگرایی بسیار حرفهای و منسجم
- پشتیبانی همزمان از چندین بانک اطلاعاتی (SQL Server, MySQL, PostgerSQL, SQLight, Oracle)
- استفاده از موتور قالب Blade جهت طراحی بسیار سادهی View
- رابط و ORM بسیار ساده
- نصب و اجرای کاملا ساده با استفاده از Composer
- پشتیبانی از Unit Test
- وجود صفها (Queue) و کارها (Jobs) برای اجرای فعالیتهای طولانی
- انجمن بسیار فعال جهت پاسخگویی به سوالات
- منابع آموزشی بسیار فراوان
- سطح امنیتی بسیار بالا
امیدوارم مقالهی فوق به عنوان اولین فصل آموزش لاراول فارسی مورد توجه شما واقع شده باشد. در صورتیکه تمایل به یادگیری این فریمورک قدرتمند دارید حتما با ما همراه باشید.
منبع: سایت روکسو