PHP یکی از معروفترین زبانهای برنامهنویسی در سرتاسر جهان است و آخرین نسخهی منتشر شده از PHP 7 باعث شده تا این زبان برنامهنویسیِ سمت سرور، بهتر و پایدارتر از همیشه باشد. در این مطلب قصد داریم شما را در انتخاب یک فریمورک خوب راهنمایی کنیم.
PHP، بطور گسترده در پروژههای بزرگ استفاده میشود. برای مثال، فیسبوک به عنوان بزرگترین شبکه اجتماعی موجود در اینترنت از PHP استفاده میکند.
وردپرس که بیش از 26% از سایتهای اینترنتی را پوشش میدهد، از PHP استفاده میکند. در حال حاضر PHP، بیشتر از 82% از وبسایتهای جهان را به حرکت در آورده است.
در این مقاله سه تا از محبوب ترین فریمورکهای PHP را بررسی خواهیم کرد: Symfony ،Laravel و Yii. در ادامه با بررسی تخصصی این سه فریمورک قصد داریم شما را در انتخاب فریمورک مناسب کارتان راهنمایی کنیم.
چرا از فریمورک برای توسعه سایت خود استفاده میکنیم؟
مزیت استفاده از یک فریمورک بجای PHP برای طراحی و توسعهی نرمافزار چیست؟ برخی از مزایای استفاده از فریمورک عبارتند از:
فریمورکِ PHP، توسعه را سریعتر میکند. برای مثال، برای بازیابی دادهها از دیتابیس نیازی به نوشتن کوئریهای پیچیده نیست. فریمورکهای PHP، عملیاتِ CRUD را ارائه میدهند.
CRUD به اختصار از چهار بخش ایجاد کردن یا Create، خواندن یا Read، بهروز رسانی یا Update و حذف کردن یا Delete تشکیل شده است.
فریمورکها با وجود استفاده از مدل MVC سرعت کد نویسی توسعهدهندگان را سریع تر میکنند.
نگهداریِ کد در فریمورک بسیار سادهتر از برنامههای بدون فریمورک است. امنیت نیز در فریمورکها در سطح بسیار بالایی قرار دارد.
فواید بالا بسیار مهمتر و قابل توجهتر از آن هستند که نادیده گرفته شوند. با اینکه میتوان از کد خامِ PHP برای ایجاد هر برنامهای استفاده کرد، ولی استانداردهای توسعهی امروزی برای اینکه پاسخگوی تقاضای بازار باشند، نیازمند مهارتهای ابزاری و مدیریت زمان هستند.
مطلب کامل آشنایی با فریمورک ها
چگونه فریمورک مناسب خود را انتخاب کنیم؟
پاسخ دادن به سوالهای زیر به شما کمک میکنند تا فریمورک مناسبی انتخاب کنید:
- ویژگیها و عملکردهای فریمورک چه هستند؟
- سختی و آسانی یادگیری فریمورک چگونه است؟
- فریمورک چقدر مقیاسپذیر است؟
- تیم توسعه هسته اصلی فریمورک چقدر فعال و بروز هستند؟
- آیا فریمورک نسخه با پشتیبانی بلند مدت (LTS support) دارد؟
- آیا جامعهای قوی از فریمورک پشتیبانی میکنند؟
آشنایی با فریمورکهای Laravel و Symfony و Yii
قبل از توضیح جزئیات فنی، مروری راجع به هر یک از فریمورکهای مورد مقایسه خواهیم داشت:
فریمورک سیمفونی / Symfony Framework
Symfony مجموعهای از کامپوننتهایِ PHP با قابلیت استفادهی مجدد است که این امکان را به توسعه دهنده میدهد تا برنامههایی مقیاسپذیر، با عملکردی عالی ایجاد کنند. با داشتن 30 کامپوننت، توسعهدهنده، آزادی کاملی برای تجربه و کار با محیطِ RAD را دارد. APIهای Symfony امکان یکپارچه سازی آسان با برنامههایِ third-party را نیز فراهم میآورند و همراه با فریمورکهایِ front-end محبوبی مثلِ AngularJS نیز کار میکند.
بسیاری از پروژههای محبوب مثل دروپال (Drupal) و phpBB نیز از فریمورکِ Symfony استفاده میکنند. درواقع Laravel، محبوبترین فریمورکِ PHP، از Symfony ساخته شده است.
آشنایی و آموزش فریمورک سیمفونی
فریمورک لَرَوِل / Laravel Framework
Laravel، که شاید پر طرفدارترین فریمورک PHP باشد، جامعهای عالی دارد و برندهی جایزهی محبوبترین فریمورک است.
در 2015 ماه می، Laraval اعلام کرد که ورژنِ 5.1 برای مدت دو سال پشتیبانی بلند مدت خواهد داشت. ورژنِ 5.2 در دسامبرِ 2015 منتشر شد. تعداد زیادی از شرکتهای هاستینگ از Laraval پشتیبانی میکنند و برای هاستینگِ برنامههای Laraval، راه حلهایی را پیشنهاد میدهند.
آشنایی و آموزش حرفهای فریمورک Laravel
فریمورک یی / Yii Framework
این فریمورک توسطِ کیانگ ژو (Qiang Xue) در سال 2008 طراحی شد. Yii فریمورکی امن و سریع است و قابلیت ایجاد برنامههایی با عملکرد بالا دارد. Yii برای هَندِل کردن وابستگی ها از composer استفاده میکند. همچنین Yii به لطف تکنیک Lazy Loading سریعترین فریمورکِ PHP است.
ویژگی فوقالعادهی دیگرِ Yii، ادغامِ jQuery است. ادغام، این امکان را به توسعهدهندهی front-end میدهد تا بهسرعت با فریمورک خو بگیرد و برای تولید کد از scaffolding استفاده میکند. Yii مشابهِ Symfony، از کامپوننتهایی برای توسعه ابزارها استفاده میکند.
فاکتورهای مقایسهِ فریمورکها
هر سه فریمورک برای ساخت برنامههای وبِ 2.0 عالی هستند، ولی هر فریمورک برای هدف متفاوتی ارائه شده است. در ادامه به توضیح ویژگیهای آنها میپردازیم.
فاکتور موتورهای قالب یا Template Engine
موتورهای Templating باعث کاهش حجم کد نویسی و داشتن قابلیت های خودکار برای بهبود کیفیت و امنیت کدهای نوشته شده برای رابط کاربری هستند. این موتورها ویژگیهایی مثلِ HTML escaping خودکار و فیلترها را ارائه میدهد و به صورت تخصصی به مبحث ایجاد قالب میپردازند.
Twig، سیستم قالب Symfony
Twig، یک سیستمِ مدرنِ templating است. از نظر بسیاری از متخصصین Twig شاید قوی ترین سیستم مدیریت قالب PHP باشد. Twig این امکان را به توسعهدهندگان میدهد تا کدهایی واضح و مختصر بنویسند و همچنین قابلیتهای بیشتری نسبت به کدهای خامِ PHP به آنها میدهد. برای مثال، برای نوشتن کدی برایِ escaping، از کد طولانی زیر استفاده میکند:
echo htmlspecialchars($var, ENT_QUOTES, 'UTF-8')
Twig همین کار را با کد زیر انجام میدهد:
{{ var|e }}
برای آشنایی بیشتر با Twig به سایت رسمی twig به آدرس مراجعه کنید.
Blade، سیستم قالب Laravel
برخلاف دیگر سیستمهای مدیریت قالب، Blade این امکان را به شما میدهد تا در viewها از کدِ PHP استفاده کنید. همچنین Blade بری عملکردِ برنامه، zero overhead دارد، چون فایلهای blade view با پسوندِ .blade.php
ذخیره میشوند. در طی فرآیند پردازش، تمام کدهای فایلهای view تبدیل به PHP خام میشوند.
سیستم داخلی مدیریت قالب Yii
Yii بصورت پیشفرض از هیچ سیستمِ مدیریت قالب خارجی (third party templating) استفاده نمیکند، ولی به این معنی نیست که از این سیستمِ محروم باشد. غیر از سیستم داخلی مدیریت قالب Yii میتوانید از سیستمهای مدیریت قالب دیگر مانند Twig و Smarty نیز بهره ببرید.
هیچکدام از این سه فریمورک بر دیگری برتری ندارند. هر سه این فریمورکها برای کدنویسیِ و قابلیت نگهداریِ front-end، از موتورهایِ templating استفاده میکنند و هرکدام مزایا و معایب خاص به خود را دارند.
تفاوتهای بین فریمورکهای Symfony و Yii و Laravel
هر فریمورکی بصورتی متفاوت ایجاد میشود. Symfony روی کامپوننتهای با قابلیت استفادهی مجدد کار میکند و بهترین ماژولاریتی را ارائه میدهد. همچنین Symfony برای توسعهی برنامههای تحت وب از مدل و کنترلر استفاده میکند که البته ممکن است برای بسیاری از توسعهدهندگانِ جدید، به نظر قدیمی برسد، ولی خیلی خوب کار میکند. همچنین، Symfony نمونهی خوبی از فریمورکِ ماژولار است. میتوانید از 30 کامپوننتی که Symfony ارائه داده، با تنوعی از ماژولارها، در پروژهتان استفاده کنید.
Symfony برای توسعههای سریع و پروژههای پیچیده کاربرد دارد. حتی اگر بحث سر این باشد که کدام فریمورک برای پروژههای پیچیده بهتر است، Symfony در مقایسه با دیگر فریمورکها، در زمینهی هَندِل کردن پیچیدگیها در عمل، سابقهی درخشانی دارد. Yii از کامپوننتها هم استفاده میکند ولی به اندازهی Symfony ماژولار نیست. Laravel به اندازهی دو فریمورکِ دیگر، ماژولار نیست.
اگر به دنبال یک فریمورک ماژولار هستید، از Symfony استفاده کنید. بعلاوه، Laravel و Yii هر دو انتخابهای خوبی هستند.
نصب و راهاندازی فریمورکهای Symfony و Yii و Laravel
هر سه فریمورک، روند نصب متفاوتی دارند ولی در عین حال هر سه را میتوانید با Composer پیاده سازی کنید.
آموزش و آشنایی با Composer برای مدیریت وابستگیهای نرم افزاری
برای Symfony، نقش Composer مهمتر است. هَندِل کردن کامپوننت ها، با استفاده از Composer PHP Manager به بهترین روش انجام میشود.
راههای دیگری نیز برای نصب فریمورکهای مربوطه وجود دارد. برای مثال، میتوانید با استفاده از متد سادهی archive نیز فریمورکها را نصب کنید.
بعد از نصب، Yii، یک برنامهی وب و یک template عمومی و مبتدی به شما نمایش داده میشود تا روی آن کار کنید. همچنین Symfony 2 یک برنامهی نمایشی برای شروع، ارائه میدهد.
Laravel نیز با استفاده از نصب کننده کامپوزر یا دستورات خط فرمان به شما پروژهای ساده برای شروع کد نویسی میدهد.
سرعت توسعه در سه فریمورک Symfony و Yii و Laravel
از دید شرکت یا مشتری، آماده کردن سریع برنامه برای ورود به بازار جهت پاسخگویی به تقاضای مشتری مهم است. Symfony، فریمورکی قوی به همراه جامعهای استوار در پشتَش است. Laravel نیز سرعت توسعه بالایی دارد.
از طرف دیگر اگر با فریمورکهایِ PHP آشنایی ندارید و میخواهید با حداکثر سرعت شروع به کار کنید، Laravel را انتخاب کنید. منحنی یادگیریِ Laravel ساده است و آموزشهای زیادی بصورت آنلاین وجود دارند که در شروع کار به شما کمک خواهند کرد.
Yii عملکرد هم عملکرد خبوی دارد و هم سریع میتوان آن را یاد گرفت در ضمن کد scaffolding را ارائه میدهد.
عملکرد سه فریمورک Symfony و Yii و Laravel
عملکرد تمام برنامههای تحت وب زمانی اهمیت ویژه پیدا میکند که برنامه بصورت Real Time باجرا شود و دادههای حیاتی را پردازش و نمایش دهد.
طبیعتا برنامههای Real Time واقعی با فشار کاری بالا بسیار کم هستند ولی Yii چند نمونه شبکه اجتماعی را به خوبی پیاده سازی کرده است.
البته سرعت و کارایی فریمورکها را میتوان برای مقاصد خاص بهبود بخشید. مثلا اگر در اینترنت جستجو کنید راه کارهایی برای بهبود عملکرد Laravel پیدا میکنید.
پشتیبانی از پایگاه داده
Symfoney2 با Doctrine بهترین عملکرد را در ارتباطات پایگاه داده از خود نشان داده است و در آن میتوانید از SQLها و NoSQLهای متنوعی بهره ببرید.
Laravel نیز عملکرد خوبی دارد ولی نسبت به Symfony تنوع پایگاه داده کمتری دارد.
سیمفونی (Symfony) از پایگاه دادههای زیر پشتیبانی میکند:
- Microsoft BI
- MongoDB
- MySQL
- NoSQL
- PostgreSQL
- CouchDB
- DynamoDB
- GemFire
- GraphDB
- MemBase
- MemCacheDB
- Oracle
- Apache Jackrabbit
لاراول (Laravel) از پایگاه دادههای زیر پشتیبانی میکند:
- SQLite
- MySQL
- PostgreSQL
- Redis
- Microsoft BI
- MongoDB
- Yii از پایگاه دادههای زیر پشتیبانی میکند:
- MySQL
- SQLite
- Microsoft BI
- Oracle
- PostgreSQL
- MongoDB
جامعه کاربری و منابع یاد گیری این سه فریمورک PHP
یکی از مواردی که میتوان با توجه به آن طول عمر یک فریمورک را پیشگویی کرد، استوار بودنِ جامعهی پشت آن فریمورک است. هر سه فریمورک جامعهای استوار دارند، البته ممکن است جامعهی Symfony قدرتمند تر و جامعه کاربران Laravel گسترده تر باشد. جوامع، در حال رشد و تغییر هستند بنابراین پیشگویی پویایی آیندهی جوامع چالش برانگیز است.
در زمینهی یادگیری و سرعت شروع Laravel پیشگام است، هرچند Symfony و Yii خیلی عقب نیستند.
توسعه و گسترش فریمورکهای Symfony و Laravel و Yii
فریمورکها ساختارهایی هستند که به وسیلهی اکستنشنها (extentions) یا پکیجها قابل گسترش هستند و میتوان عملکرد و قابلیتهای آنها را ارتقاء بخشید. Laravel در زمینهی اکستنشنها (extensions) پیشگام است. یکی از دایرکتوریهایِ پکیجِ Laravel به نامِ Packalyst بیشاز 9000 پکیج ارائه میدهد. از طرف دیگر Yii و Symfony به ترتیب، حدوداً 2800 اکستنشن (extension) و 2830 باندِل (bundle) ارائه میدهند. به نظر میرسد که Laravel با داشتن سه برابر اکستنشن (extension)، در این زمینه بهترین فریمورک است.
شباهتهای فریمورکهای Symfony و Laravel و Yii
اکنون که تفاوتهای میان فریمورکها را بررسی کردیم، به شباهتهای آنها میپردازیم:
- هر سه فریمورک، برای ایجاد برنامههای وب 2.0، قوی، امن و قابل اعتماد هستند.
- هرسه فریمورک، فریمورکهایِ full-stack PHP هستند و برای ایجاد برنامههای وب، ویژگیهای مختلفی، از نوشتن کدهای front-end گرفته تا بازیابی دادههایِ back-end، ارائه میدهند.
- پروژهها سورسباز هستند و میتوانید سورس کد آنها را در GitHub بیابید، که باعث میشود هر کسی بتواند به راحتی در آن مشارکت کند. پروژه Symfony و پروژه Laravel و پروژه Yii در GitHub.
- این فریمورکها توسط جامعهای بزرگ و داکیومنت و پشتیبانی قابل قبولی دارند.
- هر سه فریمورک از ORM و یا Object Relationship Mapping پشتیبانی میکنند.
جمع بندی برای انتخاب فریمورک مناسب
هنوز هم نمیتوانید از بین فریمورکها یکی را انتخاب کنید؟ شاید چک لیستهای زیر در انتخاب و محدود کردن آپشنها به شما کمک کنند:
Symfony:
- یک نسخهی LTS را ارائه میدهد.
- ویژگیهای مختلفی دارد.
- در حال حاضر باثباتترین فریمورک است.
- یک فریمورک مبتنی بر کامپوننت است و ماژولاریتیِ گستردهای را پیشنهاد میدهد، و بخاطر منابع آموزشی زیادش، جامعه بزرگی دارد.
Yii:
- از Ajax پشتیبانی میکند.
- از آنجایی که عملیات سریعتری را ارائه میدهد، برای توسعهی برنامههای زمان-واقعی (real-time) عالی است.
- بسیار توسعهپذیر است.
- قابلیت رفع خطا خوبی دارد.
- برای ایجاد وب سرویسهایِ Restful خوب است.
- و بخاطر منابع آموزشی زیادش، جامعهای بزرگ دارد.
Laravel:
- محبوبترین فریمورک سالهای 2015 و 2016 است.
- یادگیری آسانی دارد.
- برای مدیرت پکیج، از Composer پشتیبانی میکند.
- تست واحد را بخوبی انجام میدهد،
- برای گسترش ویژگیها و قابلیتهای فریمورک، تعداد زیادی پکیج ارائه میدهد.
نتیجهگیری
هر سه فریمورکِ Symfony، Laravel و Yii، آپشنهای عالی هستند که برای توسعهدهندگان، محیط توسعهی full-stack را فراهم میکنند.
البته بنده به شخصه با Symfony کار میکنم و از آن بسیار راضی هستم. Symfony با جامعهای قدرتمند و بزرگ خود توانسته جای پای خود را سفت کند. البته Laravel و Yii هم هر دو عالی هستند.
برای بروز ماندن، توسعه دهندگان فریمورکها را Follow کرده و از مطالب آموزشی فریمورکها در هیتوس استفاده کنید.
اگر سوال و یا پیشنهادی دارید در بخش نظرات با ما در ارتباط باشید.
منابع: opensourcelaravelsymfonyyiiتگ ها: متن باز / open sourceدیتابیس و پایگاه دادهSQL Injectionلاراول / Laravelسیمفونی / symfonyهک
فوق العاده بود . بدون هیچ تعصبی همه موارد مقایسه شده بود. مچکرم.
ممنون از لطفتون.