رتبه موضوع:
  • 6 رای - 3.83 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
مقدمه ای بر cakePHP
#1
Cakephp چیست ؟
در سایت رسمی cakephp به نشانی http://cakephp.org اینچنین آمده است:
« cake یک framework با قابلیت گسترش سریع برای php است که از الگوهای عمومی شناخته شده طراحی همانند Active Record، Association Data Mapping، Front Controller و معماری MVC استفاده می نماید. هدف اولیه ما ایجاد یک فریم ورک ساخت یافته است که کاربران PHP در هر سطحی را قادر می سازد که بتوانند برنامه های قدرتمند تحت وب را به سرعت گسترش دهند، بدون این که از انعطاف پذیری آن کاسته شود. »
Framework چیست ؟
فریم ورککلکسیونی از کدها، کتابخانه ها، کلاس ها و محیط های زمان اجراست که به برنامه نویس کمک می کند تا برنامه های تحت وب خود را سریع تر و با انعطاف بیشتر بسازد.
ایده اصلی پشت استفاده از فریم ورک این است که توسعه دهنده را آماده کند تا بر اساس یک ساختار اولیه و با استفاده از عواملی که عموما مورد استفاده قرار می گیرند، برنامه کاربردی خود را بنا کند. اکثر برنامه نویسان کارکشته و با تجربه PHP، کتابخانه ها و ساختارهایی را برای گسترش سریع تر برنامه های خود تدارک می بینند و در پروژه های مختلف از آن ها بهره می گیرند، اما ایجاد یک برنامه کاربردی تحت وب بر مبنای یک Framework متن باز همانند cakePHP، مزایای مشهود خود را دارد. به این ترتیب توسعه دهندگان و برنامه نویسان علاوه بر تجارب خود قادرند از تجارب سایر برنامه نویسان نیز سود جسته و بکار بندند.
مهمترین مزایای استفاده از CakePHP در توسعه برنامه های کاربردی تحت وب و سایت ها را می توان موارد زیر برشمرد:
- پشتیبانی از الگوهای طراحی رایج (Design Patterns)
- توسعه سریع تر وب
- سازگاری با نگارش های 4و5 PHP
- متن باز و مجانی بودن
- ساختارهای کد اصلاح شده
پشتیبانی از الگوهای طراحی رایج:
الگوی طراحی (Design Pattern) راه حلی کلی برای مشکلات رایج در برنامه نویسی وب است. الگوی طراحی کد کامل نیست بلکه راهکاری برای حل مشکل است که در شرایط گوناگون مورد استفاده قرار می گیرد. در برنامه نویسی تحت وب الگوهای طراحی زیادی برای حل مشکلات رایج که اکثرا تکراری نیز می باشند، وجود دارد. cakePHP تعداد زیادی از این الگوهای طراحی را به صورت توکار و یکپارچه شده پشتیبانی می نماید.
برخی از این الگوها که اشاره نیز شد عبارتند از :
Active Record ، Front Controller ، Association Data Mapping و معماری MVC.
در بین موارد مذکور معماری MVC که بر اساس مدل (Model)، نما (View) و کنترل کننده (Controller) استوار است، در هسته cakePHP موجود بوده و در واقع ستون فقرات cakePHP را تشکیل می دهد.
توسعه وب به صورت سریع:
یکپارچگی الگوهای طراحی در cakePHP به این معنی است که توسعه دهندگان و برنامه نویسان دیگر درگیر حل مشکلاتی که عموما در هنگام پیاده سازی پروژه های تحت وب بروز می کند، نخواهند گردید. چون همه این مسائل در cakePHP قبلا حل شده و توسعه دهندگان فقط بر روی منطق تجاری یا روند اصلی در هدف نرم افزار کاربردی تحت وب خود متمرکز گشته و بالطبع کارشان سریع تر پیش خواهد رفت.
سازگاری با نگارش های 4 و 5 PHP :
cakePHP با هر دو نگارش 4 و 5 PHP سازگاری کامل دارد ( در زمان نگارش این دو نسخه به صورت پایدار عرضه شده است)، بنابراین برنامه کاربردی ایجاد شده با استفاده از cake به راحتی قابل حمل بوده و اجرا می شود.
cakePHP مجانی و Opensource است:
Cake به صورت مجانی و opensource تحت لیسانس MIT عرضه می گردد و تا به امروز به طور رسمی نگارش غیر مجانی از تیم توسعه دهنده عرضه نشده است. با این تفاصیل اگر شما یک PHP کار حرفه ای باشید با سهولت تمام می توانید با کمک سورس ها و کامنت های موجود ( که به من در نوشتن این کتاب کمک شایانی نمود) منطق توابع، کلاس ها کتابخانه ها و ... را دریابید.
در هنگام بارگزاری این فریم ورک از سایت رسمی اش می توانید به تیم توسعه از لحاظ مالی کمک کنید یا هدیه دهید ( Donation ) که بستگی به سخاوت شما و مبلغ کارت اعتباریتان دارد!

ساختار اصلاح شده کدها:
PHP یک زبان برنامه نویسی فوق العاده برای توسعه وب بوده و یادگیری آن نیز تقریبا آسان است ( اگر شما با زبان C کار کرده باشید مطمئنا شباهت های زیادی را خواهید دید. ). این زبان در هنگام کد نویسی بسیار انعطاف پذیر بوده و کد نویس یا توسعه دهنده را محدود و مقید به رعایت ساختار خاصی نمی کند. البته این مسئله در عین حال که مزیت است مشکل هم هست! برای برنامه نویسان کم تجربه و تازه کار ایجاد برنامه های بزرگ زیرا در اکثر موارد کدهای غیر ساخت یافته دیباگ و رفع اشکال را بسیار مشکل می نماید. علاوه بر آن ایجاد تغییرات در برنامه نیز وقتی منطق در جایی تغییر کند می تواند عصبی کننده شود. البته این موارد و مصائب مختص برنامه نویسان تازه کار نیست بلکه زمانی که یک برنامه پیچیده می شود دامن گیر حرفه ای ها نیز خواهد شد. اوضاع زمانی وخیم تر هم می شود که چند توسعه دهنده با هم بر روی یک پروژه کار می کنند و هر کدام از آن ها ( با توجه به خصوصیت PHP که در بالا گفته شد) بر اساس سلیقه و قلق خودشان کد می نویسند، در نتیجه جمع آوری کدها، یکپارچه سازی، بهینه سازی و ... بر اساس اصول مهندسی نرم افزار خودش پروژه دیگری خواهد شد!
اما طراحان cake مشکل فوق الذکر را چنین حل کرده اند که معماری cake توسعه دهندگان را محدود به رعایت ساختاری خاص می کند، بنابراین کلیه کدها ساختار خاصی را رعایت نموده و از لحاظ ساختاری واحدند در نتیجه مدیریت و نگهداری کدها آسان خواهد شد.
نکته:
شاید شما با خود بگویید خوب چطور شد که یک مزیت حذف شده و در عین حال به برتری تبدیل شده است؟ جواب این سوال این است که می توان در مواردی که نیاز باشد از تمهیداتی که در هنگام طراحی cake برای این منظور دیده شده استفاده کرد یعنی cake این مزیت php که در موردش صحبت شد را حذف نکرده است بلکه با تغییراتی به آن شکل داده است. در فصل های آتی به طور ملموس تری این قضیه را در خواهید یافت.
برای رعایت و برقرار داشتن ساختارهای استاندارد cake از الگوهای طراحی استفاده می کند که مهم ترین آن ها معماری MVC است.

الگو یا معماری MVC :
الگوی MVC سر نام مدل Model - نما View - کنترل کننده Controller ، به اعتقاد برخی رایج ترین الگوی جدید طراحی در توسعه نرم افزار است. در این الگو یا معماری همان طور که گفته شد کدها به سه گونه تقسیم می شوند : مدل ها ، نماها و کنترل کننده ها.
مفهوم هر گونه بستگی به نحوه پیاده سازی دارد به این معنی که انعطاف پذیر بوده و در فریم ورک های مختلف می تواند متفاوت باشد. بنابراین بحث ما بر سر الگوی MVC که در cakePHP استفاده می شود خواهد بود.
مدل ها Models :
یک مدل نمایانگر یک جدول منحصر به فرد در پایگاه داده هاست هر جدول پایگاه داده که در برنامه کاربردی قصد استفاده از آن را داریم بالاجبار مدلی به عنوان نماینده باید داشته باشد. تمامی کدهای مربوط به دستیابی به داده ها، افزودن ، تغییر و اصلاح یا حذف رکورد ها از جدول در مدل واقعند. علاوه بر آن مدل حاوی کدهایی می تواند باشد که امکان ارتباط و تعامل با سایر مدل ها را فراهم سازند. به زبان ساده تر همان مفهوم Relationship را که بین جداول پایگاه داده استفاده می شود و رایج است به این طریق در سطح انتزاع به تصویر کشیده شده و استفاده می شود.
در مدل می توان قواعدی را برای اعتبار سنجی داده ها ( Data Validation ) در هنگام عملیات بر روی داده ها ایجاد و مدیریت نمود. در واقع مدل ها مکان هایی هستند که منطق تجاری برنامه کاربردی در آنجا ایجاد می شود.
نکته : مدل را می توان به عنوان لایه ی داده ها ( Data Layer ) در برنامه کاربردی در نظر گرفت.

کنترل کننده ها Controllers:
کنترل کننده ها منطق یا جریان برنامه کاربردی را کنترل می کنند. برابر با هر درخواستی که به کنترل کننده ارجاع شود منطق کنترل کننده در مورد پاسخ تصمیم گیری نموده و آن را ایجاد می کند. در حالت عادی منطق کنترل کننده حاوی فراخوانی هایی به مدل جهت دستیابی به داده ها و مواردی نظیر کنترل ، دسترسی و ... است. در انتها کنترل کننده پاسخ یا خروجی را به نما (View) ارسال می کند.

تذکر: همان طور که در قسمت مدل شرح داده شد، مدل باید کلیه منطق اصلی برنامه را در بر بگیرد بنابراین کنترل کننده فقط باید وساطت فعالیت ها (Actions) را به مدل انجام داده و کاملا شفاف باشد. برخی اوقات این فلسفه طراحی را " مدل های حجیم و کنترل کننده های سبک " می نامند.

نکته: کنترل کننده را به عنوان لایه کنترل منطق برنامه کاربردی (Logic Control) برنامه کاربردی در نظر گرفت.

ادامه دارد
پاسخ


پیام‌های این موضوع
مقدمه ای بر cakePHP - cybercoder - 2010/01/10, 06:02 PM

موضوعات مشابه ...
موضوع نویسنده پاسخ بازدید آخرین ارسال
  mention in cakephp mohaddeseh 3 3,189 2016/08/24, 12:16 PM
آخرین ارسال: mohaddeseh
  برای یادگیری cakephp باید او phpرا اموزش ببینم؟ mim90 8 6,648 2015/06/28, 11:18 PM
آخرین ارسال: fery
  درخواست یک کتاب خوب برای آموزش CakePHP iEhsan 8 11,846 2014/09/20, 02:18 PM
آخرین ارسال: vahidqara
  منظور از CakePHP Bake console چی؟ yasairane2014 1 2,483 2014/02/18, 06:12 PM
آخرین ارسال: saleh
  مفاهیم cakephp با مثال عرفان 0 2,100 2013/02/03, 09:09 AM
آخرین ارسال: عرفان
Question استفاده از روتر cakephp (حل شد) amirDev 3 3,917 2012/11/21, 12:49 PM
آخرین ارسال: saleh
  کنسول cakePHP dadadoodoo 4 4,727 2012/05/29, 09:21 PM
آخرین ارسال: cybercoder
  سوالات من در مورد CakePHP DeadSpace 3 4,586 2012/02/10, 11:57 AM
آخرین ارسال: payamsp
  نگاهی گذرا بر mvc در cakephp ghasem.fattahpour 0 2,546 2011/10/17, 01:07 AM
آخرین ارسال: ghasem.fattahpour
  مستندات cakephp zagrosweb 1 3,188 2010/09/27, 08:28 PM
آخرین ارسال: payamsp

پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان