تا حالا به این فکر کردی که توی دنیای سرعتی و پرشتاب امروز، داشتن یه فریمورک سریع و سبک چقدر میتونه مهم باشه؟ مخصوصاً وقتی قراره یه وبسایت یا اپلیکیشن تحت وب سنگین بسازی و میخوای هم کاربرهات تجربه عالیای داشته باشن و هم خودت از پیچیدگیهای کدنویسی سردرد نگیری! خب، اینجا جاییه که Phalcon وارد میشه، یه فریمورک بینهایت سریع و قدرتمند برای PHP که قراره با سرعت موشک کارها رو پیش ببره. پس بیا با هم نگاهی به این فریمورک فوقالعاده بندازیم و ببینیم چرا اینقدر مورد توجه برنامهنویسها قرار گرفته!
Phalcon چیست؟
Phalcon یه فریمورک متنباز (open-source) برای زبان برنامهنویسی PHP هست که یه تیم از برنامهنویسها به رهبری آندرس گوتیرز ساختنش. این فریمورک بر اساس الگوی معروف MVC (یا همون Module View Controller) ساخته شده. حالا جالب اینجاست که Phalcon اولین فریمورکیه که از ORM (یعنی مدلسازی دیتابیس) با زبان C استفاده کرده. این یعنی سرعتش نسبت به بقیه فریمورکها خیلی بالاتره و کدنویسی باهاش هم سادهتره.
ساختار برنامه در Phalcon
یکی از ویژگیهای اصلی Phalcon اینه که یه فریمورک loosely coupled یا همون "اتصال شل" هست. یعنی چی؟ یعنی اجباری به رعایت یه ساختار ثابت نداری و میتونی پروژت رو با ساختاری که مناسب اپلیکیشن خاص خودته، بسازی. با اینکه Phalcon از الگوی MVC (مدل-نما-کنترلر) پیروی میکنه، اما انعطافپذیری بالایی داره و بهت اجازه میده که ساختار پروژه رو متناسب با نیازت تغییر بدی.
در حالت استاندارد، پروژههای Phalcon به این شکل ساخته میشن:
Application
این پوشه شامل فایلهای مهم مثل تنظیمات (config)، کنترلرها (controllers) و ویوها (views) هست. در واقع، اینجا همون قلب تپنده اپلیکیشنه که همه عملکردهای مهم رو تعریف میکنه و اسکریپتها و فایلهای ضروری برای اجرا روی سرور توش قرار داره.
Configuration
این بخش مربوط به تنظیمات برنامس. چهار تا فایل کلیدی اینجا وجود داره:
Config.php: این فایل یه رابط کاربری شیءگرا فراهم میکنه که بهت کمک میکنه تنظیمات برنامه رو به سادگی از داخل کدها بخونی و مدیریت کنی.
Loader.php: این فایل به طور خودکار همه کلاسهای پروژه رو لود میکنه. به دلیل اینکه این کامپوننت با زبان C نوشته شده، کارش با کمترین سربار (overhead) ممکن انجام میشه.
Router.php: این فایل وظیفه داره مسیرها رو به کنترلرها یا هندلرها متصل کنه. کنترلرها بر اساس این مپینگها درخواستها رو دریافت میکنن. در واقع، روتِر URI رو تجزیه میکنه تا بفهمه درخواست به کجا باید بره.
Services.php: این فایل مدیریت وابستگیها و مکان سرویسها رو بر عهده داره.
Controllers
اینجا همه متدها و عملکردهایی که درخواستهای ورودی رو مدیریت میکنن، تعریف شده. به طور پیشفرض، همه متدهایی که توی کنترلر تعریف میکنی به یه اکشن یا همون عملکرد خاص مپ میشن.
Views
این بخش، نمای ظاهری اپلیکیشنته. ویوها شامل فایلهای HTML هستن که کد PHP توشون قرار میگیره تا بتونن کارهای خاص رو انجام بدن.
Cache
این کلاس توی پوشه Phalcon قرار داره و دسترسی سریعتر به دادههایی که بیشتر استفاده میشن رو فراهم میکنه. این کلاس هم مثل Loader.php به زبان C نوشته شده و باعث افزایش کارایی و کاهش سربار میشه.
Public
این پوشه شامل همه فایلها و پوشههایی هست که به اجرای محتوای اصلی اپلیکیشن کمک میکنن، مثل فایلهای CSS، JavaScript و تصاویر.
معماری MVC (مدل-نما-کنترلر) در Phalcon
Phalcon از الگوی معماری MVC استفاده میکنه، الگویی که برای توسعهی فریمورکهای وب خیلی پرکاربرده. این معماری به سه بخش اصلی تقسیم میشه: مدلها، نماها و کنترلرها. این تقسیمبندی باعث میشه منطق تجاری (Business Logic)، دادهها و رابط کاربری از هم جدا بشن، که در نتیجه نگهداری و توسعهی کدها رو راحتتر میکنه.
مدلها: وظیفه مدلها اینه که دادههای برنامه رو مدیریت کنن و با دیتابیس در ارتباط باشن. بیشتر منطق تجاری برنامه توی مدلها قرار داره.
نماها: ویوها همون بخشی هستن که کاربر باهاشون در ارتباطه. اونها صفحات HTML به همراه کدهای PHP دارن که درخواستهای کاربر رو مدیریت میکنن و اطلاعات رو نمایش میدن.
کنترلرها: کنترلرها درخواستهای کاربر رو از ویوها دریافت میکنن، با مدلها ارتباط برقرار میکنن و نتیجه رو دوباره به ویوها برمیگردونن.
این ساختار به دلیل جداسازی وظایف، باعث سادهتر شدن نگهداری کدها میشه و توسعهدهندهها میتونن به راحتی هر بخش رو بهطور مستقل تغییر بدن.
ویژگیهای Phalcon
Phalcon یه سری ویژگیهای خیلی جذاب داره که باعث شده خیلی از برنامهنویسها عاشقش بشن. بریم ببینیم این ویژگیها چیا هستن:
سریعترین فریمورک PHP: یکی از مهمترین ویژگیهای Phalcon اینه که سرعتش فوقالعاده بالاست.
فریمورک متنباز و کامل: Phalcon یه فریمورک کامل و متنبازه که همه چیز داره.
قابلیت ساخت فریمورکهای مستقل: میتونی باهاش فریمورکهای مستقل و اختصاصی خودت رو بسازی.
نیاز به کدنویسی کمتر: برای انجام وظایف مختلف نیاز به نوشتن کد کمتری داری.
ارائه امکاناتی مثل ORM، موتور قالبسازی، مسیریابی و کش: Phalcon از ORM برای ارتباط با دیتابیس، موتور قالبسازی برای ساخت صفحات، مسیریابی برای هدایت درخواستها و سیستم کش برای ذخیرهسازی اطلاعات موقت پشتیبانی میکنه.
انعطافپذیر و با اتصال شل (loosely coupled): این فریمورک خیلی انعطافپذیره و بهت اجازه میده ساختار پروژه رو بر اساس نیاز برنامت تغییر بدی.
مقایسه Phalcon با سایر فریمورکها
برای اینکه بدونیم Phalcon در مقایسه با بقیه فریمورکها چطوره، یه جدول مقایسه بین اون و چند تا از معروفترین فریمورکهای PHP درست کردیم:
ویژگی
Yii2
ZEND1
CodeIgniter2
CakePHP
Phalcon
بهترین برای
پروژههای کوچک، متوسط، بزرگ
پروژههای متوسط و بزرگ
پروژههای کوچک، متوسط، بزرگ
پروژههای کوچک و متوسط
پروژههای کوچک، متوسط، بزرگ
نسخه PHP
PHP 5.4
PHP 5.2
PHP 5.1
PHP 5.2
PHP 5.4
لایسنس
New BSD
New BSD
MIT
MIT
New BSD, AGPL
مهارتهای موردنیاز
PHP5، OOP
PHP5، OOP و آگاهی از الگوهای طراحی
PHP، OOP پایهای
PHP، OOP و توانایی کار با فریمورک
PHP
سرعت
سریع
سبک و قابل سفارشیسازی
چابک و کمحجم
کند
فوقالعاده سریع
عملکرد
123.5 درخواست در ثانیه
103.2 درخواست در ثانیه
187.78 درخواست در ثانیه
54.97 درخواست در ثانیه
822.96 درخواست در ثانیه
پشتیبانی از حالت چند کاربره
شرطی
بله
شرطی
بله
بله
دیتابیسهای پشتیبانیشده
MySQL، SQLite، Oracle
PostgreSQL، MongoDB
Microsoft Bl، Oracle
MySQL، SQLite، Microsoft Bl
MySQL، SQLite، Oracle
الگوی طراحی
DAO، MVC، HMVC
MVC، Dependency Injection
Active Record، MVC، HMVC
Active Record، MVC
Dependency Injection، MVC، HMVC
تولید کد
Yii CLI، Gii
CLI
Console
CLI
CRUD، CLI
کتابخانه تست
PHP Unit، Selenium
PHP Unit
PHP Unit
PHP Unit
PHP Unit
این جدول مقایسه بهت یه دید کلی میده که Phalcon توی چه بخشهایی برتری داره و چقدر سریع و کارآمده.
نصب Phalcon
برای نصب Phalcon اول باید WAMP، MAMP، LAMP یا XAMP رو نصب کنی، بسته به سیستمعاملت. اینجا ما نصب رو بر اساس WAMP (ویندوز، Apache، MySQL، PHP) توضیح میدیم.
فایل DLL مربوط به Phalcon رو برای ویندوز دانلود کن.
مرحله 2: حالا پوشهای که دانلود کردی رو از حالت فشرده خارج کن و فایلهاش رو توی پوشهی C:\wamp\bin\php\php5.5.12\ext بریز. این همون پوشهایه که افزونههای PHP توش قرار میگیره.
مرحله 3: حالا باید فایل php.ini رو که توی مسیر C:\wamp\bin\php\php5.5.12\php.ini هست، باز کنی (با برنامهای مثل نوتپد یا یه ویرایشگر دیگه).
مرحله 4: در آخر، WAMP سرور رو ریاستارت کن تا تغییرات اعمال بشه. بعد از ریاستارت، میتونی ببینی که افزونه Phalcon اضافه شده.
نصب ابزارهای توسعه (Developer tools)
مرحله 1: ابزارهای توسعهی Phalcon رو از https://github.com/phalcon/phalcon-devtools دانلود کن و بعد توی درایو C اکسترکتش کن. مسیرش به این شکل میشه: C:\phalcon-devtools-master.
اطلاعات نسخه در WAMP: برای اطمینان از نسخه، WAMP سرور رو اجرا کن و روی phpinfo() کلیک کن تا اطلاعات نسخه رو ببینی.
مرحله 2: حالا باید متغیرهای محیطی (environment variables) رو برای PHP و ابزارهای توسعهی Phalcon تنظیم کنی.
مرحله 3: پنجره CMD رو باز کن و دستور phalcon رو تایپ کن تا مطمئن بشی که نصب شده.
مرحله 4: برای ایجاد پروژهی نمونه، این دستور رو اجرا کن: phalcon create-project <نام-پروژه>
ویرایش: ویرایش فایل تنظیمات سرور
برای تنظیم سرور، اول باید فایل پیکربندی Apache رو توی یه ویرایشگر متن باز کنی. این فایل معمولاً توی مسیر {wamp_dir}/apache/conf/httpd.conf قرار داره.
حالا باید دو تا تغییر انجام بدی:
اول دنبال این خط بگرد: #LoadModule rewrite_module modules/mod_rewrite.so بعدش اون علامت # رو بردار تا این ماژول فعال بشه.
بعدش دنبال این عبارت بگرد: AllowOverride None و اون رو به AllowOverride All تغییر بده.
وقتی این تغییرات رو انجام دادی، فایل رو ذخیره کن و سرور WAMP رو ریاستارت کن تا تنظیمات جدید اعمال بشه.
اجرای پروژه
برای اینکه مطمئن بشی پروژه به درستی نصب شده، باید فایل پروژت رو که توی مسیر file:///C:/wamp/www/demo/index.html هست اجرا کنی و توی مرورگر localhost رو باز کنی. اگه صفحه به درستی لود شد، یعنی همه چیز درست پیش رفته!
سوالات متداول
1. Phalcon دقیقاً چیه؟
Phalcon یه فریمورک متنباز برای PHP هست که به خاطر سرعت بالا و بهینهسازیهای پیچیدش خیلی معروفه. برخلاف بقیه فریمورکها، Phalcon به زبان C نوشته شده و به عنوان یه افزونه به PHP اضافه میشه.
2. Phalcon چه تفاوتی با بقیه فریمورکها داره؟
Phalcon سریعترین فریمورک PHP به حساب میاد چون مستقیماً به زبان C نوشته شده و بهینهسازی شدس. علاوه بر این، نیاز به کدنویسی کمتر داره و انعطافپذیری بالایی برای ساختار پروژهها ارائه میده.
3. برای استفاده از Phalcon باید C بلد باشم؟
نه، نیازی نیست! با اینکه Phalcon به زبان C نوشته شده، تو همچنان ازش مثل یه فریمورک PHP استفاده میکنی. یعنی میتونی کدهای PHP معمولی رو بنویسی.
4. Phalcon رایگانه؟
بله، Phalcon کاملاً متنباز و رایگانه. میتونی ازش توی پروژههات استفاده کنی بدون اینکه نگرانی از بابت هزینهها داشته باشی.
5. Phalcon روی چه سیستمعاملهایی کار میکنه؟
Phalcon روی سیستمعاملهای مختلف مثل ویندوز، لینوکس و مک نصب و اجرا میشه. فقط باید بستههای WAMP، LAMP یا MAMP رو متناسب با سیستمت نصب کنی.
6. برای چه نوع پروژههایی مناسبه؟
Phalcon برای هر نوع پروژهای از کوچک گرفته تا بزرگ مناسبه. اگه دنبال سرعت و عملکرد بالا هستی، Phalcon یکی از بهترین انتخابهاست.
جمعبندی
Phalcon یه فریمورک سبک و سریع برای PHP هست که به خاطر طراحی منحصربهفردش میتونه پروژههای وبسایت یا اپلیکیشن تو رو به سطح جدیدی از کارایی و سرعت برسونه. با وجود اینکه به زبان C نوشته شده، استفاده ازش نیاز به دانش C نداره و مثل بقیه فریمورکهای PHP میتونی به سادگی ازش استفاده کنی. از ویژگیهای خاص این فریمورک میشه به سرعت بالا، نیاز به کدنویسی کمتر، انعطافپذیری در ساختار پروژه و ابزارهای توسعهی قدرتمندش اشاره کرد. پس اگه به دنبال یه فریمورک قدرتمند، سریع و بهینه برای پروژههات هستی، Phalcon میتونه انتخاب ایدهآلی باشه!