چارچوبهای پی اچ پی
چارچوبها (به انگلیسی: framework) راهکاری برای برنامهنویسهایی هستند که میخواهند با روشی آسانتر و با صرف زمان کمتر برنامهنویسی کنند. از معروفترین چارچوبهای موجود میتوان به چارچوب دات نت اشاره کرد. در دنیای برنامهنویسی به زبان پی اچ پی (PHP) هم چارچوبهای متعددی وجود دارند که هر کدام مزایا و معایب خود را دارا میباشند. در این نوشته مهمترین چارچوبها به طور مختصر معرفی میگردند. از آنجا که هیچ یک از این چارچوبها را نمیتوان بهترین نامید، در معرفی آنها ترتیب الفبایی رعایت شدهاست.
CodeIgniter
کد ایگنایتر یکی از چارچوبهای ساده و کم حجم است که برای برنامهنویسانی مناسب است که میخواهند با کمترین دردسر به طراحی وب بپردازند. این چارچوب از الگوی مدل-نمایش-کنترلگر (Model-View-Controller pattern) استفاده میکند به این معنی که آن چه برای کاربر نمایش مییابد در پروندههای «نمایش» تنظیم میگردد، اطلاعاتی که بر اساس آن صفحه نمایش خواهد یافت توسط «مدل» آماده میشود، و «کنترلگر» رابطهٔ بین این دو و تمامی اجزای لازم دیگر را بر قرار میسازد.
Symfony
سیمفونی یکی از مفصلترین چارچوبهای موجود برای برنامهنویسی در زبان پی اچ پی است. با توجه به ویژگیهای زیر، این چارچوب برای برنامههای پیچیده مناسب است:
- کلاس های بهم پیوسته متعدد که در کارهای پیچیده و گروهی بسیار میتوانند کمک کننده باشند.
- سرعت بالاتر نسبت به سایر رقبا از جمله CakePHP
- بهرهگیری از ORMهای قدرتمندی همچون Propel و Doctrine
- امکانات زیاد جهت طراحی backed برنامه
- عدم پیچیدگی حتی با بهرهگیری از امکانات بالا
کوتاه راجع به سمفونی
یک فریم ورک یا قالب کاری اغلب به کدها ساختار میدهد، و باعث میشود تا کدهای طراحان بهتر نوشته شوند و خواناتر باشند و همچنین قابل نگه داری تر!
همچنین طراحی برنامه را قانونمند میکند باعث اسانتر شدن برنامه نویسی میشود زیرا عمل پیچیده را به دستورات ساده تبدیل میکنید.
سمفونی یک فریم ورک کامل است که برای بهینه کردن صفحات وب بوسیله چندین خاصیت بهینه شده!
برای مبتدی ها کاری که اون انجام میده جدا کردن لایه نمایش از کدهای برنامه و جدا کردن هر دوی اینها از منابع داده است.
به وسیله ابزارها و کلاسهای متعدد سمفونی میتواند در کمترین زمان ممکن برنامه های تحت وب پیچیده را به سر انجام برساندبعلاوه ان ، وظایف رایج را به صورت خودکار انجام میدهد تا طراحان بتوانند به صورت کامل بر روی نقاط خاص برنامه خود تمرکز کنند.
اخرین نکته ای که میتوان ذکر کرد اینست که از دوباره کاری و افتادن در یک چرخه ، در ایجاد پروژه های متعدد جلوگیری میکند.
سمفونی کاملا توسط php5 نوشته شده و ازمایش خودشو توسط برنامه های گوناگون دنیای واقعی پس داده!
اون با اکثر data base های موجود سازگاره مانند mysql و postgre sql و oracle و microsoft sql server
اون بر روی تمام سیستم های unix base و windows قابل اجراست .
خوب حالا یه نگاه دقیقتر به خصوصیاتش میندازیم:
سمفونی برای براوردن نیازهای زیر درست شده:
- نصب و تنظیم ساده دراکثر پلتفرم ها (( و تنظیم شده برای کار بروی پلتفرم های استاندارد unix base و windows ))
- موتور پایگاه داده مستقل
- برای اکثر موارد براحتی استفاده میشه اما انقدر انعطاف داره که برای مواد پیچیده هم به کار بره
- با اکثر الگوهای طراحی و تمرینی سازگار است
- دارای کدهای بسیار خوانا است و برای خوانایی بیشتر برای مستند سازی از php documentor استفاده میکنه
- توسعه اسان و اجازه تلفیق ان با سایر کتابخانه ها
- خود کار سازی خصوصیات پروژهای وب
- Based on the premise of convention over configuration—the developer needs to configure only the unconventional
- Enterprise-ready—adaptable to existing information technology (IT) policies and architectures, and stable enough for long-term projects
خود کار سازی خصوصیات پروژهای وب
اکثر خصوصیات رایج پروژه های وب به وسیله سمفونی خودکار سازی شده اند که به شرح زیرا ند:- لایه های بین المللی درون ساخته اجازه ترجمه هر دو لایه داده و نمایش را برای محلی سازی محتوا میدهند.
- پوسته ها و لایه های ارائه محتوا (( رابط کاربری)) میتوانند توسط طراحان HTML ، بدون داشتن دانش از فریم ورک ساخته شوند . کمک کننده ها (( Helper)) موجب کاهش کدهای لایه ارائه بوسیله ایجاد قسمت های بزرگ ، تنها بوسیله صدا کردن توابع ساده میشوند.
- فرم ها از تصدیق اعتبار و تعدد خودکار پشتیبانی می کنند و این باعث تضمین کیفیت خوب داده در دیتابیس و یک تجربه کاربری بهتر میشوند.
- خصوصیت مدیریت حافظه نهان (( cash )) باعث کاهش پهنای باند مصرفی و تعداد مراجعات به سرور می شود.
- خصوصیت تصدیق و اعتبار موجب اسانتر شدن ساختن قسمت های محدود شده ی دسترسی می شود و همچنین موجب تسهیل مدیریت امنیت کاربرن می شود.
- مسیریابی و url های هوشمند موجب اسان شدن و دوستانه تر شده ادرس صفحات برای موتور های جستجو می شود.
- خصوصیت E-mail و API درون ساخته به برنامه ی وب اجازه عبور از فعل و انفعالات معمولی با مرورگر را میدهد.
- لیست ها بوسیله صفحه بندی و مرتب سازی و فیلترینگ خودکار ، کاربر پسند تر می شوند.
- وجود فاکتور های اضافه شونده ها (( plug-in )) و mixins قابلیت توسعه پذیری بالایی را ایجاد می کنند.
- فعل و انفعالات اجاکس راحتر انجام میشوند که این خود بخاطر وجود کمک کنندهای خاص این کار است
چه کسی سمفونی را ساخت و چرا؟
اولین شماره از سمفونی توسط بنیان گذار پروژه Fabien Potencier در سال 2005 منتشر شد.
فابین مدیر عامل شرکت Sensio است که به خاطر ایده های نو در گسترش وب یک نیروی فعال فرانسوی در زمینه وب محسوب می شود .
قبل از سال 2003 فابین زمانی رو صرف تحقیق در مورد ابزارهای اپن سورس توسعه وب در زبان php کرد ولی اون هیچ چیزی رو که نیازهاشو بر اورده کند پیدا نکرد !
زمانی که php5 منتشر شد ، اون به این نتیجه رسید که ابزارهای موجود به قدر کافی بالغ شدن که بتوان اونها رو در یک فریم ورک با تمام خصوصیات ادغام کرد .
متعاقبا اون یک سال زمان صرف ایجاد هسته ی سمفونی کرد و پایه کاری خودش رو بر روی قالب کاری MVC بنا کرد و اون رو به طرف ORM سوق داد و از کمک کنند های پوسته ی Ruby ON Rails هم استفاده کرد.
فابین اساسا سمفونی رو برای کارهای شرکت خودشون درست کرد تا یک قالب کاری موثر با راههای مشخص و منظم برای انجام سریعتر و موثر تر پروژه ها داشته باشند.
اون باعث میشه پروژه های وب مشهور تر و نتیجه برنامه نیرومند تر و نگه داری ساده تر بشه ، وقتی که از این فریم ورک در سایت لباس فروشی بر پایه تجارت الکترونیک استفاده شد این فریم ورک خودشو تثبیت کرد و از اون به بعد در پروژه های زیادی از اون استفاده شد.
بعد از اینکه از سمفونی به طور موفقیت امیز در چند پروژه استفاده شد ، فابین تصمیم به انتشار اون تحت لیسانس اپن سورس کرد.
فابین این پروژه رو به اجتماع بخشید تا از بازخورد کاربران بهره مند شه و همچنین برای نشان دادن ورزیدگی شرکتش این کارو کرد و همچنین این کارو کرد چون جالب بود!
برای اینکه سمفونی یک پروژه موفقیت امیز اپن سورس باشه باید به طور گسترده به زبان انگلیسی مستند سازی میشد . فابین از کارمند دیگه شرکتش François Zaninotto خواست تا بر روی کدها مطالعه کند و یک راهنمای انلاین بنویسد!
این کار به راستی که وقت گیر بود ولی وقتی پروژه عمومی شد ، داشتن مستند سازی کافی ، جاذبه ای برای جذب تعداد زیادی طراح شد.
ایا سمفونی برای من است؟
چه شما تازه کار باشید یا یک فرد خبره در php5 ، خواهید توانست که از سمفونی استفاده کنید . عامل اصلی در تصمیم گیری در استفاده از سمفونی برای پروژه شما اندازه ی پروژه شماست
اگر شما قصد طراحی یک وب سایت ساده با پنج الی ده صفحه و دسترسی محدود بانک اطلاعاتی دارید و هیچ لزومی ندارد که کارایی اون و مستند سازیشو تضمین کنید باید فقط از php استفاده کنید.
در این حالت شما هیچ سودی از استفاده از یک فریم ورک نمی کنید و استفاده از فریم ورک یا حتی شی ء گرایی و MVC فقط موجب کند شدن چرخه طراحی شما میشود.
یک نکته دیگر هم وجود دارد و ان اینست که سمفونی برای اجرا بر روی هاست های اشتراکی (( shared server )) بهینه سازی نشده است.
از طرف دیگر اگر شما وب سایت های پیچیده طراحی می کنید با یک منطق سنگین تجاری ، php تنها کافی نیست!
اگر در اینده قصد نگه داری و توسعه کدهای خود را دارید ، باید کدهای شما کم ، خوانا و تاثیر گذار باشد.
اگر میخواهید امکانات پیشرفته ای را مانند Ajax را در سایتتان به کار ببرید نمی تواند فقط چند صد کد جاوا اسکریپت را بنویسید.
اگر میخواهید سریع طراحی کنیدو لذت ببرید ، php تنها مایوس کننده هست.
در تمام این موارد سمفونی برای شماست
و البته اگر شما یک طراح حرفه ای وب هستید ، ازتمام سودمندی های فریم ورک اگاهید و چیزی که برای شما مهم است مستند سازی خوب و داشتن جامعه کاربری گسترده است .
بیشتر نگردید ، سمفونی چاره مشکلات شماس
خلاصه
سمفونی یک فریم ورک طراحی برنامه های وب بر پایه php5 است.اون یک لایه جدید بر روی php اضافه کرده و با فراهم کردن ابزارهایی موجب تسریع و تسهیل فرایند ایجاد وب سایت های پیچیده میشود.
برای درک اون باید یک ذهنیت ساده از oop یا شی ء گرایی ، ORM یا نگاشت ارتباطات اشیاء و rapid application development (RAD) داشته باشیم.
تنها چیزی که باید به طورفنی از قبل بدانید php است.
قبل از اینکه شما کار کردن با سمفونی را شروع کنید ، شما باید چند مفهوم پایه ای را بدانید و انها عبارت اند از :
OOP , ORM , RAD, DRY , KISS , TDD , YANL , PEAR
xAjax
اگر چه تقریباً تمام چارچوبهای دیگر به تنهایی یا با کمک گرفتن از افزونههای در دسترس، امکان پشتیبانی از AJAX را دارند اما چارچوب اکس-ایجکس مشخصاً برای طراحی چنین صفحههایی برای وب ایجاد شدهاست و این کار را برای برنامهنویسان بسیار آسان میکند.
Zend
چارچوب زند هم یکی از مفصلترین چارچوبهای موجود برای برنامهنویسان پی اچ پی است که به آنها امکان طراحی سریع با استانداردهای وب ۲ را میدهد. با کمک این چارچوب میتوان به آسانی با رابطهای برنامهنویسی (API) مانند رابطهای گوگل، آمازون، فلیکر و غیره کار کرد.
با این حال، برخی از برنامهنویسان چارچوب زند را به علت پیچیدگی زیادش توصیه نمیکنند. این چارچوب برای برنامهنویسان تازهکار گزینه مناسبی نیست.

