Framework چیست؟
بهتر است بدانید که FrameWork اینگونه معنا میشود که از دو عبارت Frame به معنای قاب و اسکلت بندی و Work به معنای کار کردن روی آن قالب تشکیل شده است. در اصل FrameWork یک ساختار منظم در اختیار برنامه نویس قرار میدهد تا بتواند بر روی آن کار کند و به هدف خود برسد.
مهمترین دلایل استفاده از FrameWork ها به قرار زیر هستند:
۱- Code and File Organization
به این مفهوم است که هر FrameWork یک ساختار منظم برای پوشه بندی فایلهای پروژه در اختیار شما قرار میدهد و به کمک این پوشه بندی میتوان فایلهای مختلف را از هم جدا کرد. قابلیت دیگر این است که با این تقسیم بندی ها بر تعداد فایلها افزوده شده و از حجم آنها کاسته می شود. این امر باعث میشود که بررسی فایلها و رفع ایراد آنها زودتر انجام شود.
۲- Utilities and Libraries
در زبان PHP تعداد بیشماری ابزار و کتابخانه متنوع برای کاربردهای مختلف موجود است. زمانی که بخواهیم پروژه ای را کدنویسی کنیم نیاز به تعدادی از این کتابخانهها داریم و در مواردی مجبوریم تا خودمان بعضی از آنها را بنویسیم. بررسی اینکه کدامیک از این کتابخانهها بهتر هستند یا کدامیک از آنها با یکدیگر همخوانی بیشتری دارند نیازمند تمرکز بر روی کد آنها و صرف زمان است که گاه از توانایی ما خارج است.
سازندگان FrameWork ها این موضوع را در نظر میگیرند و ضمن انتخاب بهترین کتابخانه ها، هماهنگی لازم میان آنها را نیز در نظر می گیرند. کاربرد برخی از این کتابخانهها به قرار زیر هستند:
Form Validation
Input/Output filtering
Database Abstraction
Session and Cookie Handling
Email, Calendar, Pagination etc…
اکثر این کتابخانهها به دلیل اینکه توسط افراد حرفهای کدنویسی شدهاند و بصورت عمومی منتشر شده اند، مورد نقد و بررسی افراد زیادی قرار گرفتهاند و آزمون های امنیتی لازم را پشت سر گذاشته اند. در نتیجه احتمال وجود باگ در آنها بسیار کم است.
۳- The MVC Pattern
زبان PHP در اصل مانند یک Template Engine عمل می کند. اما کدنویسی به این نحو بسیار پیچیده و غیر قابل نگهداری است. با بزرگتر شدن ابعاد پروژه کدها نامفهوم تر و پیچیدهتر میشوند و کار کردن بر روی آنها مشکلتر می شود. معماری طراحی ۳ لایه یا همان MVC Design Pattern این مشکل را برطرف می کند. در این معماری کدها به ۳ بخش Model، View و Conroller تقسیم میشوند. معمولاً یک Router نیز درخواست های ورودی را به کنترلر مربوطه هدایت می کند. به این ترتیب کدها مرتب تر و تمیز تر شده و ضمن تقسیمبندی آنها به ۳ دسته فوق، امکان توسعه و اشکال زدایی پروژه در زمان کمتر امکانپذیر می شود.
۴- Security
در مورد امنیت میدانیم که توابع متنوعی در زبان PHP وجود دارند که میتوانند ورودی های کاربر را بررسی کرده و کدهای خطرناک را از داخل آنها حذف کنند و یا توابعی برای کد کردن کوکی ها و… وجود دارند که می توانند سطح امنیتی پروژه را ارتقا دهند. اما استفاده دستی از این توابع ممکن است خطرات زیادی به دنبال داشته باشد. مثلاً اینکه تابعی از قلم بیوفتد و یا اینکه در قسمتی از کد به کلی فراموش کنیم که ورودی ها و خروجی را بررسی کنیم.
در مقابل اکثر FrameWork ها عملیات بررسی ورودی و خروجی و مدیریت کوکی را بصورت خودکار انجام میدهند و خیال برنامه نویس را از این بابت راحت می کنند. برای مثال در فریم ورک CodeIgniter کارهای زیر بصورت خودکار انجام می شوند:
- Any value passed to database object gets filtered against SQL injection attacks.
- All html generating functions, such as form helpers and url helpers filter the output automatically.
- All user input can be filtered against XSS attacks.
- Encrypting cookies automatically is only a matter of changing a config option
۵- Less Code & Faster Development
با وجود اینکه برای هر FrameWork مستندات آموزشی وجود دارد و مسلط شدن بر روی یک فریم ورک جدید نیازمند مطالعه این مستندات است، اما با نوشتن اولین پروژه در یک FrameWork، از پروژه های بعد شاهد خواهید بود که انجام یک پروژه در مدت زمان کمتر انجام میشود. در کنار این موضوع، به دلیل اینکه وقت شما صرف بررسی مسائل امنیتی و جستجو برای پیدا کردن کتابخانههای مورد نیاز نمی شود، بیشتر تمرکز خود را میتوانید صرف انجام هر چه بهتر پروژه کنید. از حجم کدنویسی های شما کاسته میشود و در عوض میتوانید قابلیتهای بیشتری برای پروژه خود ایجاد کنید.
۶- Community Support
همه ی FrameWork ها انجمنهای بحث و گفتگو دارند تا توسعه دهندگان بتوانند با هم در ارتباط باشند و به یکدیگر راهنمایی دهند. در صورت بروز یک مشکل یا ایراد، میتوانید آن را در این انجمنها مطرح کرده و پاسخ خود را پیدا کنید.
۷- Job Opportunities
اگر دیده باشید اکثر شرکت هایی که برنامه نویس استخدام میکنند بر این گزینه تأکید دارند که فرد مورد نظر باید تجربه کار با FrameWork ها و یا CMS ها را داشته باشد. این تجربه به برنامه نویس کمک میکند تا در هنگام کدنویسی دید بهتری داشته باشد و بصورت استاندارد عمل کند.
۸- Performance Tools
شاید بگویید نوشتن برنامه Hello World با یک FrameWork زمان بر تر از نوشتن آن با کد مستقیم PHP است و اتفاقاً کد مستقیم سریعتر عمل می کند. این مثال بدی است؛ برای روشن شدن دلیل آن ابتدا باید بدانید که برنامه نویسان بسیار گران تر از سرورها هستند. صرفه جویی در زمان برنامه نویس بسیار به صرفه تر از صرفه جویی در هزینه سرور است.
در کنار این موضوع لازم است بدانید که اکثر FrameWork ها برای استفاده بهینه از منابع از ابزارهای گوناگون بهره می گیرند. ابزارهایی برای Caching، Profiling و…
از آن گذشته FrameWork های جدید امکان باارزشی به نام Dynamic Loading دارند تا کتابخانهها و کدهای پروژه را در زمانی که به آنها نیاز است فراخوانی کنند. درخواست های گوناگون حجم کد متفاوتی را بر اساس نیازشان اجرا خواهند کرد.
۹- Suitable for Teamwork
با استفاده از یک FrameWork استاندارد میتوانید به راحتی بصورت تیمی کار کنید. شخصی را برای کار کردن بر روی View ها قرار دهید، فردی بطور همزمان بر روی دیتابیس کار کند و شما نیز قسمت کنترلر را همزمان انجام دهید. در کنار این افراد، میتوانید شخصی را برای ساخت آزمون های واحد(unit testing) قرار دهید تا با امکانات موجود در FrameWork، عملکرد قسمتهای مختلف را مورد آزمون قرار دهد.
۱۰- Efficiently Access Database
FrameWork ها دسترسی به دیتابیس را بصورت شی گرا برقرار می کنند. با این قابلیت شما میتوانید بدون نوشتن Query با دیتابیس ارتباط برقرار کنید. معمولاً این ارتباط توسط ORM ها صورت می گیرد. ORM ها یا همان Object-Relational Mapper ها جداول دیتابیس شما را بصورت خودکار به کلاسهای PHP تبدیل میکنند و هر سطر این جداول یک Instance از کلاس PHP مربوط به جدول است. در نتیجه برای ایجاد، ویرایش، حذف و یا نمایش دادهها نیازی به نوشتن کوئری های SQL نخواهیم داشت. این کلاسها همچنین ارتباطات بین جداول را پیاده میکنند و در نتیجه برنامه نویس دیگر نیازی به برنامه نویسی برای کار با دیتابیس نخواهد داشت.
۱۱- And It’s Fun
مهمترین مزیت یک FrameWork ممکن است جالب بودن آن باشد. زمانی که کار کردن بر روی پروژه برای شما جالب و دلنشین باشد، میتوانید مفیدتر و موثرتر کار کنید.
برای افرادی که سال هاست بطور مستقیم کدنویسی PHP کردهاند و از آن خسته شده اند، استفاده از یک FrameWork مانند خرید یک اسباببازی جدید است که قادر است پروژه های بزرگ را پیادهسازی کند.
جمعبندی
اینکه شما باید از یک FrameWork استفاده کنید یا نه، اجباری نیست و به تصمیم شما بستگی دارد. اما شما باید با ذهنی باز و بدون پیش داوری با تازه های روز در دنیای وب در ارتباط باشید. امروزه استفاده از FrameWork های آماده رایج است اما ما نمیدانیم که فردا برای ما چه می آورد.