esmahdi
شنبه 07 شهریور 1394, 22:13 عصر
استفاده از چارچوب های برنامه نویسی (فریم ورک) در زبان های تحت وب رواج بسیاری یافته است. در زبان php نیز فریم ورک های قدرتمند بسیاری در سال های گذشته شروع به کار کرده اند که برخی واقعا موفق بوده اند.
مطرح ترین فریم ورک ها عبارتند از:
zend
symfony
codeigniter
cakephp
yii
laravel
agavi
و...
مورد بحث ما در این مقاله symfony است که قصدی در مقایسه اون با سایر فریم ورک ها ندارم، و بخاطر چندین سال استفاده از اون مایل بودم این سلسله مطالب رو آماده کنم.
این فریم ورک توسط شرکت ها و در محصولات بزرگی استفاده می شود. برخی از استفاده کنندگان این فریم ورک عبارتند از:
drupal
PIWIK
OROCRM
Laravel
phpBB
eZ Publish
Yahoo
به عنوان مثال Laravel خود به تنهایی فریم ورک قدرتمند و بزرگی است که در بخش هایی از برخی از امکانات symfony استفاده می کند. حتی zend framework که بزرگترین فریم ورک موجود برای زبان php است و توسط شرکت توسعه دهنده php یعنی شرکت zend توسعه داده می شود به پیشنهاد توسعه دهندگان اصلی خود از بخشی از سیمفونی مانند Doctrine بهره می برد.
همان طور که متوجه شدید در واقع symfony مجموعه ای از library هایی است که هرکدام وظیفه مشخصی رو انجام می دهند. به همین خاطر می شود فقط از برخی از کتابخانه های symfony استفاده کرد.
فریم ورک های مطرح php اساسا برای کار خود از مدل mvc برای توسعه استفاده می کنند. mvc یک معماری نرم افزاری است که از حروف ابتدایی کلمات (model, view, control) تشکیل می شود. هدف اصلی این مدل نظم و سرعت بخشیدن به کار توسعه برنامه است. مدل mvc برای اولین بار در سال 1979 معرفی شد.
قبل از توضیح مبحث mvc لازم بذکر است که این نکته را مطرح کنیم که از توضیحات فنی را گذرا بخوانید، در آینده وقتی به صورت عملی با طرز کار یک چارچوب مبتنی با mvc آشنا شوید این مدل برایتان قابل فهم خواهد بود.
اجزای تشکیل دهنده mvc به نحو زیر معرفی می گردند:
model (مدل در mvc): این قسمت مسولیت کنش های پایگاه داده را برعهده دارد، داده ها قبل از ذخیره در دیتابیس ابتدا تبدیل به یک شی می شوند و پس از اعمال تغییرات لازم و یا اعتبار سنجی های لازم در دیتابیس ذخیره می شوند. در هنگام فراخوانی نیز داده ها به شی مورد نظر تبدیل می شوند و پس از تغییرات لازم به بخش نمایشگر و یا view تحویل داده می شوند.
view (نمایشگر در mvc): این بخش مسولیت آماده سازی واسط کاربری برنامه (user interface) را بر عهده دارد. بخش view در معماری mvc با استفاده از بخش model آماده می شود. به این صورت که داده ها را بشکل شی از model دریافت می کند و به شکلی که برنامه نویس در view مشخص کند به نمایش در می آید.
controller (کنترلر در mvc): این بخش مدیریت درخواست ها را برعهده دارد. ارتباط بین view و model بوسیله controller انجام می پذیرد.
مقاله ای کامل در مورد mvc در آینده در سایت قرار خواهد گرفت.
چارچوب کلی کار فریم ورک symfony بر اساس mvc به همین شکلی است که در بالا توضیح داده شد. البته پیاده سازی مدل mvc هیچ گاه دقیقا به این سادگی نبوده است و مقداری پیچیده تر است.
Symfony به صورت خلاصه از قسمت های زیر تشکیل شده است:
routing و یا مسیر یابی: این بخش مسولیت مسیریابی و انتخاب controller مختص هر وظیفه را دارد. مثلا در routing مشخص می کنیم که اگر کاربر در مرورگر خود آدرس /aboutus را به منظور دستیابی به صفحه "درباره ما" درخواست داد، باید این درخواست به controller مخصوص نمایش صفحه aboutus رجوع داده شود.
entity: این بخش مسولیت سرو سامان بخشیدن به ارتباطات دیتابیس را بر عهده دارد. مثلا در این بخش روابط موجود بین جدول های بانک اطلاعاتی مشخص می شود. در این بخش نام هر فیلد، محدودیت های نوع و طول آن ها و امور دیگر مشخص می شود.
view: در این بخش فایل های مربوط به نمایش اطلاعات با هم جمع شده اند. البته این بخش فقط حاوی اسکلت بندی بخش نمایش است، چون داده ها باید از دیتابیس دریافت، تبدیل به شی و در این بخش استفاده شوند.
controller: اصلی ترین بخش هر برنامه ای در symfony همین بخش است. routing بر اساس ورودی، controller خاص را انتخاب می کند، از این به بعد کل وظایف با controller است و کار با routing تمام می شود. Controller پس از دریافت ورودی ها و انجام پردازش های مورد نظر و یا حتی دریافت اطلاعات از model خروجی مناسب را برای نمایش آماده و نتیجه را به کاربر نمایش می دهد.
form: این بخش فرم های مورد استفاده در برنامه را ذخیره می کند. البته استفاده از این بخش و یا حتی بخش view اجباری نیست ولی کنار گذاشتن آن ها با ساده سازی فرایند ها و هدف اصلی استفاده از فریم ورک منافات دارد.
فایل بندی فریم ورک سیمفونی به شکل زیر است:
app
---cache
---config
---logs
---resources
src
vendor
web
پوشه app متعلق به فایل های پیکربندی اصلی فریم ورک است. src متعلق به فایل های پروژه برنامه ای است که می نویسیم. vendor متعلق به فایل های library و کلاس های پایه symfony است. پوشه web فایل های اضافی مانند css ها، js ها و عکس ها را شامل می شود.
برخی از فایل های موجود در پوشه app اهمیت بیشتری دارند. مانند فایل های زیر:
app/AppKernel.php
app/config/config.yml
app/config/routing.yml
منبع: http://itlogs.ir/article/symfony-review
مطرح ترین فریم ورک ها عبارتند از:
zend
symfony
codeigniter
cakephp
yii
laravel
agavi
و...
مورد بحث ما در این مقاله symfony است که قصدی در مقایسه اون با سایر فریم ورک ها ندارم، و بخاطر چندین سال استفاده از اون مایل بودم این سلسله مطالب رو آماده کنم.
این فریم ورک توسط شرکت ها و در محصولات بزرگی استفاده می شود. برخی از استفاده کنندگان این فریم ورک عبارتند از:
drupal
PIWIK
OROCRM
Laravel
phpBB
eZ Publish
Yahoo
به عنوان مثال Laravel خود به تنهایی فریم ورک قدرتمند و بزرگی است که در بخش هایی از برخی از امکانات symfony استفاده می کند. حتی zend framework که بزرگترین فریم ورک موجود برای زبان php است و توسط شرکت توسعه دهنده php یعنی شرکت zend توسعه داده می شود به پیشنهاد توسعه دهندگان اصلی خود از بخشی از سیمفونی مانند Doctrine بهره می برد.
همان طور که متوجه شدید در واقع symfony مجموعه ای از library هایی است که هرکدام وظیفه مشخصی رو انجام می دهند. به همین خاطر می شود فقط از برخی از کتابخانه های symfony استفاده کرد.
فریم ورک های مطرح php اساسا برای کار خود از مدل mvc برای توسعه استفاده می کنند. mvc یک معماری نرم افزاری است که از حروف ابتدایی کلمات (model, view, control) تشکیل می شود. هدف اصلی این مدل نظم و سرعت بخشیدن به کار توسعه برنامه است. مدل mvc برای اولین بار در سال 1979 معرفی شد.
قبل از توضیح مبحث mvc لازم بذکر است که این نکته را مطرح کنیم که از توضیحات فنی را گذرا بخوانید، در آینده وقتی به صورت عملی با طرز کار یک چارچوب مبتنی با mvc آشنا شوید این مدل برایتان قابل فهم خواهد بود.
اجزای تشکیل دهنده mvc به نحو زیر معرفی می گردند:
model (مدل در mvc): این قسمت مسولیت کنش های پایگاه داده را برعهده دارد، داده ها قبل از ذخیره در دیتابیس ابتدا تبدیل به یک شی می شوند و پس از اعمال تغییرات لازم و یا اعتبار سنجی های لازم در دیتابیس ذخیره می شوند. در هنگام فراخوانی نیز داده ها به شی مورد نظر تبدیل می شوند و پس از تغییرات لازم به بخش نمایشگر و یا view تحویل داده می شوند.
view (نمایشگر در mvc): این بخش مسولیت آماده سازی واسط کاربری برنامه (user interface) را بر عهده دارد. بخش view در معماری mvc با استفاده از بخش model آماده می شود. به این صورت که داده ها را بشکل شی از model دریافت می کند و به شکلی که برنامه نویس در view مشخص کند به نمایش در می آید.
controller (کنترلر در mvc): این بخش مدیریت درخواست ها را برعهده دارد. ارتباط بین view و model بوسیله controller انجام می پذیرد.
مقاله ای کامل در مورد mvc در آینده در سایت قرار خواهد گرفت.
چارچوب کلی کار فریم ورک symfony بر اساس mvc به همین شکلی است که در بالا توضیح داده شد. البته پیاده سازی مدل mvc هیچ گاه دقیقا به این سادگی نبوده است و مقداری پیچیده تر است.
Symfony به صورت خلاصه از قسمت های زیر تشکیل شده است:
routing و یا مسیر یابی: این بخش مسولیت مسیریابی و انتخاب controller مختص هر وظیفه را دارد. مثلا در routing مشخص می کنیم که اگر کاربر در مرورگر خود آدرس /aboutus را به منظور دستیابی به صفحه "درباره ما" درخواست داد، باید این درخواست به controller مخصوص نمایش صفحه aboutus رجوع داده شود.
entity: این بخش مسولیت سرو سامان بخشیدن به ارتباطات دیتابیس را بر عهده دارد. مثلا در این بخش روابط موجود بین جدول های بانک اطلاعاتی مشخص می شود. در این بخش نام هر فیلد، محدودیت های نوع و طول آن ها و امور دیگر مشخص می شود.
view: در این بخش فایل های مربوط به نمایش اطلاعات با هم جمع شده اند. البته این بخش فقط حاوی اسکلت بندی بخش نمایش است، چون داده ها باید از دیتابیس دریافت، تبدیل به شی و در این بخش استفاده شوند.
controller: اصلی ترین بخش هر برنامه ای در symfony همین بخش است. routing بر اساس ورودی، controller خاص را انتخاب می کند، از این به بعد کل وظایف با controller است و کار با routing تمام می شود. Controller پس از دریافت ورودی ها و انجام پردازش های مورد نظر و یا حتی دریافت اطلاعات از model خروجی مناسب را برای نمایش آماده و نتیجه را به کاربر نمایش می دهد.
form: این بخش فرم های مورد استفاده در برنامه را ذخیره می کند. البته استفاده از این بخش و یا حتی بخش view اجباری نیست ولی کنار گذاشتن آن ها با ساده سازی فرایند ها و هدف اصلی استفاده از فریم ورک منافات دارد.
فایل بندی فریم ورک سیمفونی به شکل زیر است:
app
---cache
---config
---logs
---resources
src
vendor
web
پوشه app متعلق به فایل های پیکربندی اصلی فریم ورک است. src متعلق به فایل های پروژه برنامه ای است که می نویسیم. vendor متعلق به فایل های library و کلاس های پایه symfony است. پوشه web فایل های اضافی مانند css ها، js ها و عکس ها را شامل می شود.
برخی از فایل های موجود در پوشه app اهمیت بیشتری دارند. مانند فایل های زیر:
app/AppKernel.php
app/config/config.yml
app/config/routing.yml
منبع: http://itlogs.ir/article/symfony-review