فریم ورک CakePHP
پنجشنبه, ۲۰ آبان ۱۳۸۹، ۰۲:۵۷ ب.ظ
زبان پی اچ پی یکی از قدرتمند ترین و رایج ترین زبان های برنامه نویسی تحت وب است . فریم ورک های مختلفی برای این زبان وجود دارد که بازار رقابت بین آنها داغ است . یکی از قدرتمند ترین این فریم ورک ها کیک پی اچ پی (CakePHP) است.
کیک یک فریم ورک مبتنی بر معماری MVC است . این معماری از سه لایه ی مدل ها ، کنترل کننده ها و نمایه ها تشکیل می شود.
در این فریم ورک سعی شده تا سرعت و سادگی و امنیت در کنار یک دیگر گنجانده شوند و به جرات می توان گفت سرعت توسعه برنامه در این فریم ورک بسیار بالاست .
مروری بر MVC :
همانطور که قبلا گفته شد معماری MVC از سه لایه ی مدل ، نمایش ، کنترل کننده تشکیل شده است .
این لایه ها را به شرح ذیل می توان تعریف و وظایف آن ها را بیان کرد :
لایه ی مدل :
در این لایه عملیات هایی همچون تعاملات برنامه با بانک اطلاعاتی ، تعاملات جدول ها با یک دیگر ، اعتبار سنجی اطلاعات ورودی و ... انجام می شود . بطور مثال اگر بانک اطلاعاتی را به صورت اسناد و پرونده های موجود در بایگانی یک سازمان در نظر بگیریم ، لایه ی مدل مانند مسول بایگانی عمل کرده و این پرونده ها را مدیریت می کند .
لایه ی کنترل کننده :
در این لایه درخواست های کاربر پردازش می شود و به قسمت های مربوطه هدایت می شود . این لایه ، واسطه ی ارتباط بین لایه ی نمایش و مدل است ، بدین صورت که درخواست های کاربر از طریق این لایه به مدل ارسال می شود .
لایه ی نمایش :
این لایه ، لایه ای است که کاربر آن را مشاهده می کند و در واقع خروجی برنامه است . نتایج واکشی های داده از بانک اطلاعاتی ، پیام ها و هشدار ها و سایر چیز هایی که جنبه ی دیداری دارند در این لایه ایجاد می شوند .
این لایه ها را در قالب یک چارت به صورت زیر می توان تبیین کرد :
سه لایه ی اصلی کیک پی اچ پی به اجزاء مختلفی تقسیم می شود . این اجزاء نقش بسیار موثری در برنامه را به عهده دارند . در ادامه این مقاله این اجزاء توضیح داده می شود .
ساختار اجزاء کیک به شرح زیر است :
منبع اطلاعات یا Datasource جزئی از ساختار کیک است که وظیفه ارتباط با بانک اطلاعاتی را بر عهده دارد . کیک بصورت پیش فرض این قابلیت را دارا می باشد که با بانک های اطلاعاتی mysql ، postgresql ، SQLServer ، oracle و سایر بانک های اطلاعاتی رایج ارتباط برقرار کند .
رفتار کننده ها :
رفتار کننده ها یا Behaviour جزئی از ساختار کیک هستند که به مدل ضمیمه می شوند . وظیفه ی آنها این است که فعالیت های اتوماتیکی که باید روی اطلاعات ورودی یا خروجی دیتا بیس ها انجام شود را انجام می دهند .
به طور مثال اگر ما بخواهیم هنگامی که تغییری روی یک رکورد از یک جدول اتفاق افتاد در جدولی دیگر روی رکوردی تغییراتی اعمال کنیم ، یا اگر بخواهیم عملیات هایی که روی یک تیبل انجام می شود را در فایلی بصورت Log ذخیره کنیم این قسمت به ما کمک خواهد کرد . البته رفتار کننده ها فواید دیگری هم دارند که در این مثال دو نمونه ساده ذکر گردید .
Component و Vendor:
این اجزاء صرفا کلاس ها و متد هایی هستند که برای استفاده مجدد در سیستم قرار می گیرند . کد هایی که می خواهیم دیگر بازنویسی نکنیم و در طول برنامه از آنها استفاده کنیم را در این بخش ها می نویسیم .
افزونه ها :
افزونه ها (Plugins) یک پروژه جزئی در دل پروژه کلی برنامه هستند . تمام لایه هایی که یک برنامه کامل می تواند داشته باشد در افزونه ها وجود دارند . یک افزونه برای خود می تواند مدل ، کنترل کننده و حتی نمایش داشته باشد . بطور مثال پروژه شما که یک سایت خبری است می تواند یک افزونه تحت عنوان Blog داشته باشد با تمام خصوصیات و امکانات .
کمک کننده های نمایش :
کمک کننده ها (Helpers) جزئی از اجزاء لایه ی نمایش است که کد نویسی را آسان تر و سریع تر می نماید . کیک بصورت پیشفرض کمک کننده های زیاد و کارآمدی دارد که به عنوان نمونه می توان به HtmlHelper ، FormHelper و ... اشاره کرد .
نمای کلی :
نمای کلی (Layout) پوسته و قالب برنامه را تشکیل می دهد . در کیک پی اچ پی به سادگی می توان به صورت چند قالبه (Multi theme) کار کرد و به سادگی بین قالب ها سوئیچ نمود .
وصله ها :
وصله ها (Elements) جزئیاتی از قالب هستند که بر مبنای نیاز به بخش های مختلف قالب ضمیمه می شوند . به عنوان مثال برای باکس جستجو در سایت یا منو های کنار سایت می توان از Element ها استفاده نمود .
کنسول :
یکی از جذابیت های کیک پی اچ پی کنسول آن است . کنسول محیطی است که با وارد کردن کانفیگ آن در سیستم عامل می توان در محیط خط فرمان بخش های مهم و کلیدی برنامه را بصورت اتوماتیک ایجاد کرد .
خلاصه و فهرست توانایی های کنسول کیک پی اچ پی :ایجاد یک پروژه جدید .
کانفیگ بانک اطلاعاتی .
تهیه نسخه پشتیبان و بازیابی نسخه پشتیبان بانک اطلاعاتی .
ایجاد لایه های برنامه (مدل – کنترل کننده - نمایش) برای جداول بانک اطلاعاتی در برنامه .
اجرای دستورات واکشی اطلاعات از بانک اطلاعاتی بصورت آزمایشی در محیط خط فرمان .
ایجاد هسته ی افزونه جدید .
ایجاد لایه های افزونه (مدل – کنترل کننده - نمایش) برای جداول بانک اطلاعاتی در برنامه .
و ... .
برخی دستورات خط فرمان کنسول :
نیاز مندی های اجرای کیک پی اچ پی : وب سرویس آپاچی یا سایر وب سرویس ها .
پی اچ پی .
بانک اطلاعاتی (mysql – postgresql – oracle , …) .
فعال سازی rewrite mod آپاچی .
نیاز مندی های کنسول کیک :
وب سرویس آپاچی یا سایر وب سرویس ها .
پی اچ پی .
بانک اطلاعاتی (mysql – postgresql – oracle , …) .
فعال سازی php بصورت cli mod .
امنیت در کیک :
کیک پی اچ پی با فراهم کردن امکان validate کردن قدرتمند در لایه ی مدل و استفاده از ORM امنیت نسبی را دارا می باشد . این اعتبار سنجی ها به وصیله ی عبارات منظم بسیار دقیق انجام می شود و ضریب خطای بسیار پایینی دارد .
این امنیت با افزودن کتابخانه های امنیتی و استفاده در برنامه به طرز قابل توجهی افزایش می یابد . کتابخانه هایی همچون Sanitize و Security از جمله این کتابخانه های امنیتی می باشند .
این کتابخانه ها در پوشه ی اصلی کیک در پوشه libs قرار دارند .
کتابخانه های پیشفرض در کیک :
کیک پی اچ پی به صورت پیشفرض کتابخانه های مفید و جالب توجهی را در خود جای داده است . برخی از این کتابخانه ها به شرح ذیل است :مدیریت کش (Cache) .
مدیریت نشست ها (Session) .
مدیریت درگاه ها (Socket) .
اشکال زدایی (Debuger) .
مدیریت امنیت (Sanitize, Security) .
XML
اعتبار سنجی (Validate) .
برخی عناصر (Components) پیشفرض کیک :
تشخیص هویت (Auth) .
مدیریت سطوح دسترسی (ACL) .
مدیریت کوکی ها (Cookie) .
مدیریت نشست ها (Session) .
مدیریت امنیت (Security) .
مدیریت پست الکترونیکی (Email) .
مدیریت درخواست ها (Request Handler) .
برخی سایت های طراحی شده با کیک پی اچ پی :
افزونه های مرورگر موزیلا فایرفاکس .
سرویس Scratch وبسایت MIT .
وب سایت Map me .
سرویس اشتراک گذاری بوکمارک Zeadoo .
اسکریپت مدیریت فعالیت های هاستینگ Chaw .
سایت مرجع گرافیک cghub .
منابع و مراجع در دسترس برای یادگیری کیک پی اچ پی :
سایت رسمی کیک پی اچ پی : cakephp.org
سایت راهنمای کیک پی اچ پی : book.cakephp.org
سایت نمونه کد های کیک پی اچ پی : bakery.cakephp.org
انجمن پشتیبانی و توسعه کیک پی اچ پی فارسی : cakephp.ir
و در انتها عنوان می کنیم که به زودی آموزشهای جامعی در همین زمینه در این وب سایت ارائه خواهد گردید.
ارائه شده در zconf2010 (نخستین همایش سراسری نرم افزارهای آزادر زنجان)
باتشکر
سیدمرتضی حسینی
کیک یک فریم ورک مبتنی بر معماری MVC است . این معماری از سه لایه ی مدل ها ، کنترل کننده ها و نمایه ها تشکیل می شود.
در این فریم ورک سعی شده تا سرعت و سادگی و امنیت در کنار یک دیگر گنجانده شوند و به جرات می توان گفت سرعت توسعه برنامه در این فریم ورک بسیار بالاست .
مروری بر MVC :
همانطور که قبلا گفته شد معماری MVC از سه لایه ی مدل ، نمایش ، کنترل کننده تشکیل شده است .
این لایه ها را به شرح ذیل می توان تعریف و وظایف آن ها را بیان کرد :
لایه ی مدل :
در این لایه عملیات هایی همچون تعاملات برنامه با بانک اطلاعاتی ، تعاملات جدول ها با یک دیگر ، اعتبار سنجی اطلاعات ورودی و ... انجام می شود . بطور مثال اگر بانک اطلاعاتی را به صورت اسناد و پرونده های موجود در بایگانی یک سازمان در نظر بگیریم ، لایه ی مدل مانند مسول بایگانی عمل کرده و این پرونده ها را مدیریت می کند .
لایه ی کنترل کننده :
در این لایه درخواست های کاربر پردازش می شود و به قسمت های مربوطه هدایت می شود . این لایه ، واسطه ی ارتباط بین لایه ی نمایش و مدل است ، بدین صورت که درخواست های کاربر از طریق این لایه به مدل ارسال می شود .
لایه ی نمایش :
این لایه ، لایه ای است که کاربر آن را مشاهده می کند و در واقع خروجی برنامه است . نتایج واکشی های داده از بانک اطلاعاتی ، پیام ها و هشدار ها و سایر چیز هایی که جنبه ی دیداری دارند در این لایه ایجاد می شوند .
این لایه ها را در قالب یک چارت به صورت زیر می توان تبیین کرد :
- کاربر تقاضایی را به وب سرور ارسال میکند .
- همانطور که از آدرسِ درخواستیِ کاربر پیداست این درخواست به کنترلر Tasks رفته و متد index را فراخوانی میکند.
- اطلاعاتِ درخواستیِ کاربر توسط کنترلر از مدل درخواست میشود .
- مدل ، پاسخ را به کنترلر بر میگرداند .
- ویوی مربوط به ایندکس گزینش میشود .
- ویوی انتخاب شدهی ایندکس در قالب کلی سایت قرار گرفته و آماده نمایش میشود .
- نتیجهی عملیات به کاربر برگردانده می شود .
سه لایه ی اصلی کیک پی اچ پی به اجزاء مختلفی تقسیم می شود . این اجزاء نقش بسیار موثری در برنامه را به عهده دارند . در ادامه این مقاله این اجزاء توضیح داده می شود .
ساختار اجزاء کیک به شرح زیر است :
- Model
- Datasource
- Behaviour
- Controller
- Component
- View
- Helper
- Layout
- Element
- Vendor
- Plugin
منبع اطلاعات یا Datasource جزئی از ساختار کیک است که وظیفه ارتباط با بانک اطلاعاتی را بر عهده دارد . کیک بصورت پیش فرض این قابلیت را دارا می باشد که با بانک های اطلاعاتی mysql ، postgresql ، SQLServer ، oracle و سایر بانک های اطلاعاتی رایج ارتباط برقرار کند .
رفتار کننده ها :
رفتار کننده ها یا Behaviour جزئی از ساختار کیک هستند که به مدل ضمیمه می شوند . وظیفه ی آنها این است که فعالیت های اتوماتیکی که باید روی اطلاعات ورودی یا خروجی دیتا بیس ها انجام شود را انجام می دهند .
به طور مثال اگر ما بخواهیم هنگامی که تغییری روی یک رکورد از یک جدول اتفاق افتاد در جدولی دیگر روی رکوردی تغییراتی اعمال کنیم ، یا اگر بخواهیم عملیات هایی که روی یک تیبل انجام می شود را در فایلی بصورت Log ذخیره کنیم این قسمت به ما کمک خواهد کرد . البته رفتار کننده ها فواید دیگری هم دارند که در این مثال دو نمونه ساده ذکر گردید .
Component و Vendor:
این اجزاء صرفا کلاس ها و متد هایی هستند که برای استفاده مجدد در سیستم قرار می گیرند . کد هایی که می خواهیم دیگر بازنویسی نکنیم و در طول برنامه از آنها استفاده کنیم را در این بخش ها می نویسیم .
افزونه ها :
افزونه ها (Plugins) یک پروژه جزئی در دل پروژه کلی برنامه هستند . تمام لایه هایی که یک برنامه کامل می تواند داشته باشد در افزونه ها وجود دارند . یک افزونه برای خود می تواند مدل ، کنترل کننده و حتی نمایش داشته باشد . بطور مثال پروژه شما که یک سایت خبری است می تواند یک افزونه تحت عنوان Blog داشته باشد با تمام خصوصیات و امکانات .
کمک کننده های نمایش :
کمک کننده ها (Helpers) جزئی از اجزاء لایه ی نمایش است که کد نویسی را آسان تر و سریع تر می نماید . کیک بصورت پیشفرض کمک کننده های زیاد و کارآمدی دارد که به عنوان نمونه می توان به HtmlHelper ، FormHelper و ... اشاره کرد .
نمای کلی :
نمای کلی (Layout) پوسته و قالب برنامه را تشکیل می دهد . در کیک پی اچ پی به سادگی می توان به صورت چند قالبه (Multi theme) کار کرد و به سادگی بین قالب ها سوئیچ نمود .
وصله ها :
وصله ها (Elements) جزئیاتی از قالب هستند که بر مبنای نیاز به بخش های مختلف قالب ضمیمه می شوند . به عنوان مثال برای باکس جستجو در سایت یا منو های کنار سایت می توان از Element ها استفاده نمود .
کنسول :
یکی از جذابیت های کیک پی اچ پی کنسول آن است . کنسول محیطی است که با وارد کردن کانفیگ آن در سیستم عامل می توان در محیط خط فرمان بخش های مهم و کلیدی برنامه را بصورت اتوماتیک ایجاد کرد .
خلاصه و فهرست توانایی های کنسول کیک پی اچ پی :
برخی دستورات خط فرمان کنسول :
cake bake projectو دستورات دیگری که در منابع ذکر شده است .
cake bake database
cake bake model
cake bake controller
cake bake view
cake bake plugin
cake console
cake schema generate
نیاز مندی های اجرای کیک پی اچ پی :
کیک پی اچ پی با فراهم کردن امکان validate کردن قدرتمند در لایه ی مدل و استفاده از ORM امنیت نسبی را دارا می باشد . این اعتبار سنجی ها به وصیله ی عبارات منظم بسیار دقیق انجام می شود و ضریب خطای بسیار پایینی دارد .
این امنیت با افزودن کتابخانه های امنیتی و استفاده در برنامه به طرز قابل توجهی افزایش می یابد . کتابخانه هایی همچون Sanitize و Security از جمله این کتابخانه های امنیتی می باشند .
این کتابخانه ها در پوشه ی اصلی کیک در پوشه libs قرار دارند .
کتابخانه های پیشفرض در کیک :
کیک پی اچ پی به صورت پیشفرض کتابخانه های مفید و جالب توجهی را در خود جای داده است . برخی از این کتابخانه ها به شرح ذیل است :
ارائه شده در zconf2010 (نخستین همایش سراسری نرم افزارهای آزادر زنجان)
باتشکر
سیدمرتضی حسینی
۸۹/۰۸/۲۰