فریم ورک Cakephp چیست و مزایای استفاده از آن
در پاسخ به Cakephp چیست بایستی گفت « cake یک framework با قابلیت گسترش سریع برای زبان php است که از الگوهای عمومی شناخته شده طراحی همانند Active Record، Association Data Mapping، Front Controller و معماری MVC استفاده می نماید.
هدف اولیه ما ایجاد یک فریم ورک ساخت یافته است که کاربران زبان PHP در هر سطحی را قادر می سازد که بتوانند برنامه های قدرتمند تحت وب را به سرعت گسترش دهند، بدون این که از انعطاف پذیری آن کاسته شود. به شما پیشنهاد می شود برای کسب اطلاعات در حوزه زبان php چیست مقاله ما را مطالعه نمایید.
Framework چیست ؟
فریم ورک کلکسیونی از کدها، کتابخانه ها، کلاس ها و محیط های زمان اجراست که به برنامه نویس کمک می کند تا برنامه های تحت وب خود را سریع تر و با انعطاف بیشتر بسازد.
ایده اصلی پشت استفاده از فریم ورک این است که توسعه دهنده را آماده کند تا بر اساس یک ساختار اولیه و با استفاده از عواملی که عموما مورد استفاده قرار می گیرند، برنامه کاربردی خود را بنا کند. اکثر برنامه نویسان کارکشته و با تجربه PHP، کتابخانه ها و ساختارهایی را برای گسترش سریع تر برنامه های خود تدارک می بینند و در پروژه های مختلف از آن ها بهره می گیرند، اما ایجاد یک برنامه کاربردی تحت وب بر مبنای یک Framework متن باز همانند cakePHP، مزایای مشهود خود را دارد. به این ترتیب توسعه دهندگان و برنامه نویسان علاوه بر تجارب خود قادرند از تجارب سایر برنامه نویسان نیز سود جسته و بکار بندند.آمار وارقام نشان داده است که اکثر کاربران PHP تمایل به استفاده از هاست لینوکس دارند.
مهمترین مزایای استفاده از Cakephp چیست ؟
۱. پویا و جامعه دوستانه
۲. انعطاف پذیری کدها
۳. برنامه ساختارمند
۴. معماری VC
۵. درخواست های توزیع با آدرس های کوتاه ، سفارشی
۶. قالب سریع و انعطاف پذیر
۷. راهنما برای نمایش آژاکس، جاوا اسکریپت ، فرم ها و امکانات شامل: ایمیل، کوکی، امنیت، جلسه،
۸. انعطاف پذیری توسط ACL
۹. کش انعطاف پذیر
۱۰. محلی سازی
۱۱. بدون نیاز به پیکربندی آپاچی و کارکردن با استفاده از هر سرویس دهنده وب
۱۲. پشتیبانی از الگوهای طراحی رایج Design Patterns
۱۳. توسعه سریع تر وب
۱۴. سازگاری با نگارش های ۴ و ۵ php
۱۵. متن باز و مجانی بودن
۱۶. ساختارهای کد اصلاح شده [irp posts=”۲۹۶۲″ name=”جاوا اسکریپت یا javascript چیست و چه کاربردی هایی دارد”]
مزیت پشتیبانی از الگوهای طراحی در فریمورک cakephp چیست ؟
الگوی طراحی (Design Pattern) راه حلی کلی برای مشکلات رایج در برنامه نویسی وب است. الگوی طراحی کد کامل نیست بلکه راهکاری برای حل مشکل است که در شرایط گوناگون مورد استفاده قرار می گیرد. در برنامه نویسی تحت وب الگوهای طراحی زیادی برای حل مشکلات رایج که اکثرا تکراری نیز می باشند، وجود دارد. cakePHP تعداد زیادی از این الگوهای طراحی را به صورت توکار و یکپارچه شده پشتیبانی می نماید.
برخی از این الگوها که اشاره نیز شد عبارتند از:
Active Record ، Front Controller ، Association Data Mapping و معماری MVC.
در بین موارد مذکور معماری MVC که بر اساس مدل (Model)، نما (View) و کنترل کننده (Controller) استوار است، در هسته cakePHP موجود بوده و در واقع ستون فقرات cakePHP را تشکیل می دهد. [irp posts=”۱۲۷۷۷″ name=”معرفی و بررسی فریم ورک های CSS و HTML مناسب در طراحی Responsive”]
منظور از توسعه وب به صورت سریع در فریمورک cakephp چیست ؟
یکپارچگی الگوهای طراحی در cakePHP به این معنی است که توسعه دهندگان و برنامه نویسان دیگر درگیر حل مشکلاتی که عموما در هنگام پیاده سازی پروژه های تحت وب بروز می کند، نخواهند گردید. چون همه این مسائل در cakePHP قبلا حل شده و توسعه دهندگان فقط بر روی منطق تجاری یا روند اصلی در هدف نرم افزار کاربردی تحت وب خود متمرکز گشته و بالطبع کارشان سریع تر پیش خواهد رفت.
مزیت سازگاری با نگارش ۴ و ۵ PHP در فریمورک cakephp چیست؟
cakePHP با هر دو نگارش ۴ و ۵ PHP سازگاری کامل دارد ( در زمان نگارش این دو نسخه به صورت پایدار عرضه شده است)، بنابراین برنامه کاربردی ایجاد شده با استفاده از cake به راحتی قابل حمل بوده و اجرا می شود.
مزیت رایگان و Opensource بودن در فریمورک cakephp چیست ؟
Cake به صورت مجانی و opensource تحت لیسانس MIT عرضه می گردد و تا به امروز به طور رسمی نگارش غیر مجانی از تیم توسعه دهنده عرضه نشده است. با این تفاصیل اگر شما یک PHP کار حرفه ای باشید با سهولت تمام می توانید با کمک سورس ها و کامنت های موجود ( که به من در نوشتن این کتاب کمک شایانی نمود) منطق توابع، کلاس ها کتابخانه ها و … را دریابید.
در هنگام بارگزاری این فریم ورک از سایت رسمی اش می توانید به تیم توسعه از لحاظ مالی کمک کنید یا هدیه دهید ( Donation ) که بستگی به سخاوت شما و مبلغ کارت اعتباریتان دارد!
مزیت ساختار اصلا شده کدها در فریمورک cakephp چیست ؟
PHP یک زبان برنامه نویسی فوق العاده برای توسعه وب بوده و یادگیری آن نیز تقریبا آسان است ( اگر شما با زبان C کار کرده باشید مطمئنا شباهت های زیادی را خواهید دید. ). این زبان در هنگام کد نویسی بسیار انعطاف پذیر بوده و کد نویس یا توسعه دهنده را محدود و مقید به رعایت ساختار خاصی نمی کند. البته این مسئله در عین حال که مزیت است مشکل هم هست! برای برنامه نویسان کم تجربه و تازه کار ایجاد برنامه های بزرگ زیرا در اکثر موارد کدهای غیر ساخت یافته دیباگ و رفع اشکال را بسیار مشکل می نماید. علاوه بر آن ایجاد تغییرات در برنامه نیز وقتی منطق در جایی تغییر کند می تواند عصبی کننده شود. البته این موارد و مصائب مختص برنامه نویسان تازه کار نیست بلکه زمانی که یک برنامه پیچیده می شود دامن گیر حرفه ای ها نیز خواهد شد. اوضاع زمانی وخیم تر هم می شود که چند توسعه دهنده با هم بر روی یک پروژه کار می کنند و هر کدام از آن ها ( با توجه به خصوصیت PHP که در بالا گفته شد) بر اساس سلیقه و قلق خودشان کد می نویسند، در نتیجه جمع آوری کدها، یکپارچه سازی، بهینه سازی و … بر اساس اصول مهندسی نرم افزار خودش پروژه دیگری خواهد شد!
اما طراحان cake مشکل فوق الذکر را چنین حل کرده اند که معماری cake توسعه دهندگان را محدود به رعایت ساختاری خاص می کند، بنابراین کلیه کدها ساختار خاصی را رعایت نموده و از لحاظ ساختاری واحدند در نتیجه مدیریت و نگهداری کدها آسان خواهد شد.
الگو یا معماری MVC
الگوی MVC سر نام مدل Model – نما View – کنترل کننده Controller ، به اعتقاد برخی رایج ترین الگوی جدید طراحی در توسعه نرم افزار است. در این الگو یا معماری همان طور که گفته شد کدها به سه گونه تقسیم می شوند : مدل ها ، نماها و کنترل کننده ها.
مفهوم هر گونه بستگی به نحوه پیاده سازی دارد به این معنی که انعطاف پذیر بوده و در فریم ورک های مختلف می تواند متفاوت باشد. بنابراین بحث ما بر سر الگوی MVC که در cakePHP استفاده می شود خواهد بود.
مدل ها Models
یک مدل نمایانگر یک جدول منحصر به فرد در پایگاه داده هاست هر جدول پایگاه داده که در برنامه کاربردی قصد استفاده از آن را داریم بالاجبار مدلی به عنوان نماینده باید داشته باشد. تمامی کدهای مربوط به دستیابی به داده ها، افزودن ، تغییر و اصلاح یا حذف رکورد ها از جدول در مدل واقعند. علاوه بر آن مدل حاوی کدهایی می تواند باشد که امکان ارتباط و تعامل با سایر مدل ها را فراهم سازند. به زبان ساده تر همان مفهوم Relationship را که بین جداول پایگاه داده استفاده می شود و رایج است به این طریق در سطح انتزاع به تصویر کشیده شده و استفاده می شود.
در مدل می توان قواعدی را برای اعتبار سنجی داده ها ( Data Validation ) در هنگام عملیات بر روی داده ها ایجاد و مدیریت نمود. در واقع مدل ها مکان هایی هستند که منطق تجاری برنامه کاربردی در آنجا ایجاد می شود.
نکته : مدل را می توان به عنوان لایه ی داده ها ( Data Layer ) در برنامه کاربردی در نظر گرفت.
کنترل کننده ها Controllers
کنترل کننده ها منطق یا جریان برنامه کاربردی را کنترل می کنند. برابر با هر درخواستی که به کنترل کننده ارجاع شود منطق کنترل کننده در مورد پاسخ تصمیم گیری نموده و آن را ایجاد می کند. در حالت عادی منطق کنترل کننده حاوی فراخوانی هایی به مدل جهت دستیابی به داده ها و مواردی نظیر کنترل ، دسترسی و … است. در انتها کنترل کننده پاسخ یا خروجی را به نما (View) ارسال می کند.
تذکر: همان طور که در قسمت مدل شرح داده شد، مدل باید کلیه منطق اصلی برنامه را در بر بگیرد بنابراین کنترل کننده فقط باید وساطت فعالیت ها (Actions) را به مدل انجام داده و کاملا شفاف باشد. برخی اوقات این فلسفه طراحی را ” مدل های حجیم و کنترل کننده های سبک ” می نامند.
نکته: کنترل کننده را به عنوان لایه کنترل منطق برنامه کاربردی (Logic Control) برنامه کاربردی در نظر گرفت.
به شما پیشنهاد می شود برای کسب اطلاعات در حوزه فریم ورک laravel مقاله ما را مطالعه نمایید.
چرا از فریم ورک کیک باید استفاده کنیم ؟
یکی از سوالاتی که ذهن برنامه نویس را به خودش مشغول خواهد ساخت این است که از میان فریم ورک های موجود برای زبان برنامه نویسی php همانند: Codeigniter,Symphony و …. چرا باید از فریم ورک کیک برای پیاده سازی پروژه های خود برگزینیم؟
مهمترین دلیل استفاده از فریم ورک کیک را میتوان به عدم نیاز به یادگیری و استفاده از دستورات پیچیده برنامه نویسی ، آرایه ها، توابع و … توسط توسعه دهنده را اشاره نمود. در واقع می توان گفت برای پیاده سازی برنامه های تحت وب تنها نیاز به ساختار کلی پایگاه داده نیاز است و روابط و ایجاد مدل ها، صفحات و کنترل کننده ها همگی بر اساس سوالاتی که توسط این فریم ورک و براساس تعلق داشتن و روابط جداول از کاربر پرسیده می شود، به راحتی و بدون دخالت کاربر ساخته می شود.
آنچه برای شروع کار با کیک مورد نیاز است
- سرور HTTP، با rewrite فعال (برای کاربرپسند کردن URLها )
- پیاچپی ۴.۳.۲ یا بالاتر، کیک پیاچپی با نسخههای ۴ و ۵ پیاچپی کاملاً سازگار است.
برای اجرای کیک موارد فوق کافی است اما در مورد ساخت لینکدونی به یک پایگاه داده نیاز داریم. ترجیحاً از MySQL استفاده میکنیم. لازم به ذکر است، CakePHP علاوه بر MySQL از پایگاههای داده زیر پشتیبانی میکند:
PostgreSQL| Firebird DB2 | Microsoft SQL Server | Oracle | SQLite | ODBC
به شما پیشنهاد می شود برای کسب اطلاعات در حوزه مزایای استفاده از پایگاه داده mysql مقاله ما را مطالعه نمایید.
کیک کاملاً رایگان و کدباز است. به دو طریق میتوانید آخرین نسخه از آن را دریافت کنید. اول اینکه یک نسخه فشرده شدهی (zip/tar.gz/tar.bz2) آن را از بگیرید یا از مخزن SVN (برای سری ۱.۲.x.x) استفاده کنید. تمامی متعلقات کیک در پروژهای بنام CakeForge جمع آوری شده است. دریافت مستقیم کیک بهمراه مستندات نسخههای ۱.۱ و ۱.۲ آن موجود است. در این آموزش از سری ۱.۲ این فریمورک استفاده می کنیم.
پس از دریافت کیک آن را به وب سرور خود منتقل کنید ساختار فولدرهای کیک به صورت زیر است:
از فولدر App شروع میکنیم، این همان فولدری است که بیشترین کار توسعه پروژه در آن انجام می شود. هر چند نام فایلها و فولدرهای موجود در این شاخه گویای همه چیز است اما اجازه دهید نگاه دقیقتری به محتویات آن داشته باشیم:
محتویات فولدر App
- Config
- Controllers
- Locale
- Models
- Plugins
- Tmp
- Vendors
- Views
- Webroot
Config
فایلهای مربوط به پیکربندی برنامه معمولا در اینجا قرار دارند. دقت کنید این فایلها تنظیمات مربوط به هسته فریم ورک را شامل نمیشود (تنها تنظیمات مختصری در مورد پروژهی کاریمان نظیر جزییات اتصال به پایگاه داده، محل قرار گیری فایلها روی سرور و …)
Controllers
کنترلگرها و مولفههای (کامپونتهای) پروژه در این فولدر قرار خواهند گرفت. پیش از این گفتیم کنترل کننده (کنترلر) درخواستهایی که توسط کلاینت ایجاد شده را بررسی و به یه مسیر صحیح هدایت می کند.
Locale
برای فایلهای مربوط به بومیسازی پروژه مورد استفاده قرار میگیرد. برای مثال قصد دارید پروژهای را شروع کنید که به چند زبان مختلف موجود باشد، فایلهای حاوی سایر زبانها در اینجا قرار میگیرند.
Models
مدلهای پروژه در این فولدر قرار خواهند گرفت. قبلاً گفتیم که که مدلها به نوعی به داده برنامه اشاره دارد. معمولاً جداول پایگاههای داده در اینجا مورد بحث قرار میگیرند بطوریکه به ازای هر جدول پایگاه داده، یک فایل در این فولدر قرار خواهد گرفت که بدان جدول اشاره دارد.
Plugins
پکیجهای پلاگین چنانچه در صورت نیاز برای پروژه نوشته شود در اینجا قرار خواهد گرفت. پس از اتمام پروژه می توانید افزونههایی بنویسید که بدون تغییر اساسی در پروژه قابلیتهای جداگانهای بدان اضافه کند.
Tmp
در این فولدر اطلاعات تمپ (موقتی) ذخیره میشوند. نحوه ذخیره اطلاعات به تنظیمات کیک بستگی خواهد داشت، اما بطور معمول توضیحات مدل، فایلهای ثبت وقایع و گاهی اوقات اطلاعات نشستها در این فولدر ذخیره میشوند.
Vendors
کلاسها یا کتابخانههایی که توسط شخص برنامهنویس برای استفاده در برنامه نوشته میشوند باید در اینجا قرار بگیرند. جلوتر خواهید دید که بایک تابع توکار براحتی میتوانید این محتویات را به پروژه الحاق و از آنها استفاده کنید.
Views
صفحات بصری که به نوعی با کاربر در ارتباط است شامل صفحات مربوط به طرحبندی، عناصر، خطاها، راهنماها در اینجا قرار میگیرند.
Webroot
در نهایت این فولدر در نصب برنامه میبایستی به عنوان root (شاخه اصلی) پروژه بکار گرفته شود. همچنین این فولدر فایلهای مربوط به CSS، تصاویر و جاوااسکریپت را در بر خواهد داشت.
به فولدر اصلی برمیگردیم. دو فولدر cake و vendors هسته این فریمورک را تشکیل میدهند و همین اندازه آشنایی با این دو فولدر برای کار با این فریمورک کافی است (اگر مشتاقید به جمع توسعه دهندگان این فریمورک بپوندید مستندات کیک درمورد توابع و کلاسهای سازنده هسته کاملاً روشن است)
نمونه ای از استفاده ی cake php
در صفحات مختلف یک وب سایت معمولا بخش هایی وجود دارند که ثابت هستند و در مکان های مختلف تکرار می شوند ، مانند بلوک آخرین مطالب ، لوگوهای دوستان ، فرم خبرنامه و … ، در این مواقع برای جلوگیری از تکرار کد و راحت تر شدن کار از element ها استفاده می کنیم .
برای ایجاد یک فایل element در کیک پی اچ پی وارد پوشه elements از بخش views شوید و یک فایل با نام دلخواه و پسوند ctp. ایجاد کنید سپس کدهای مد نظرتان را داخل آن وارد کنید ، برای نمایش element مورد نظرتان در سایر فایلهای بخش view هم از دستور زیر استفاده کنید :
۱ | echo $this ->element( 'element_name' ); |
برای آشنایی بیشتر با این بخش یک element ایجاد می کنیم که آخرین مطالب موجود در پایگاه داده را نمایش دهد.
در مرحله اول یک متد در کنترلر مربوط به مطالب تعریف می کنیم که آخرین مطالب را به ما برگرداند:
۰۱ | class PostsController extends AppController |
۰۲ | { |
۰۳ |
۰۴ | var $name = 'Posts' ; |
۰۵ |
۰۶ | function index() |
۰۷ | { |
۰۸ | $posts = $this ->Post->find( 'all' , array ( 'limit' =>10)); |
۰۹ | if (isset( $this ->params[ 'requested' ])) |
۱۰ | { |
۱۱ | return $posts ; |
۱۲ | } |
۱۳ | else |
۱۴ | { |
۱۵ | $this ->set( 'posts' , $posts ); |
۱۶ | } |
۱۷ | } |
۱۸ |
۱۹ | } |
در اینجا متد index از کنترلر posts رو به شکلی تعریف کردیم که وقتی با استفاده از متد requestAction این متد رو درخواست کردیم مطالب خوانده شده از دیتابیس return شود تا در فایل مربوط به element بتوانیم مورد استفاده قرار دهیم.
حالا در مسیر views/elements یک فایل با نام last_posts.ctp ایجاد کنید و کدهای زیر را داخل آن وارد کنید.
۰۱ | <h3>Last Posts</h3> |
۰۲ |
۰۳ | <?php |
۰۴ |
۰۵ | $posts = $this ->requestAction( 'posts/index' ); |
۰۶ |
۰۷ | if ( is_array ( $posts )) : |
۰۸ |
۰۹ | ?> |
۱۰ | <ul> |
۱۱ |
۱۲ | <?php foreach ( $posts as $post ) : ?> |
۱۳ | <li><?php echo $this ->Html->link( $post [ 'Post' ][ 'title' ], array ( 'controller' => 'posts' , 'action' => 'view' , $post [ 'Post' ][ 'id' ])); ?></li> |
۱۴ |
۱۵ | <?php endforeach ; ?> |
۱۶ | </ul> |
۱۷ |
۱۸ | <?php endif ; ?> |
حالا هر جا که می خواهید این element رو نمایش بدید از دستور زیر استفاده کنید:
۱ | echo $this ->element( 'last_posts' ); |
منظور از تصدیق هویت در Cake PHP چیست ؟
سیستمهای تصدیق هویت کاربر بخش رایج بسیاری از برنامههای کاربردی تحت وب هستند. در CakePHP چندین سیستم بدین منظور وجود دارد که هر یک اختیارات متفاوتی ایجاد میکند. سادهترین آن استفاده از کامپوننت authentication است که در صورت تصدیق کاربر، مجوز ورود به تمام بخشهای برنامه میدهد.
این کامپوننت می تواند با کامپوننت دیگری بنام Access Control Lists برای ساخت مدلهای پیچیدهتری که سطوح مختلفی از دسترسی را تعیین میکند، ترکیب شود. برای مثال به یک کاربر مجوز دسترسی به بخشهای عمومی، به دیگری اجازه ویرایش مطالب و به کاربری دیگر مجوز مدیر سیستم را بدهد.
کار با کامپوننت authentication بطور باورنکردنی ساده و سریع است اما کاربرد کامپوننت ACL شاید برای بار اولی که از ان استفاده میکنید کمی مشکلتر باشد اما با یادگیری کاربرد آن به یکی از جالبترین و پرقدرت ترین کامپوننتهای توکار کیک تبدیل خواهد شد.
برای شروع یک سناریو ساده به شکل زیر را که در عمل صورت میگیرد تصور کنید:
۱- تلاش برای مشاهده آدرس. در ابتدا فرض کنید کاربری بنام محسن سعی میکند محتویات صفحهایی به آدرس http://alvanweb.com/article/edit را مشاهده کند.
۲- تجزیه آدرس. هنگامی که درخواست کاربر از طریق مرورگر ارسال میشود، کامپوننت authentication تشخیص میدهد که آدرس درخواستی با کنترلری بنام article و کنشی بنام edit (که خود با کنشی از نوع update رابطه دارد) در ارتباط است.
۳- آیا صفحه محدود شده است؟ همچنین این کامپوننت تشخیص میدهد که دسترسی به این کنش در کنترلر article محدود شده است. بنابراین بررسی میکند که آیا کاربر وارد سیستم شده است یا خیر.
۴- نمایش فرم ورود کاربر. تا هنگامی که کاربر وارد نشده باشد هر درخواستی برای مشاهده این آدرس به صفحهایی حاوی فرم ورود هدایت میشود تا کاربر بتواند با درج نام و کلمه عبور وارد سیستم شود.
۵- تطبیق نام و کلمه عبور کاربر. پس از ارسال فرمی که منطبق با اطلاعات موجود در بانکداده است، این کامپوننت تشخصی میدهد که نامکاربری mohsen است. تا اینجا فقط صحبت از کامپوننت authentication بود…
۶- پرسش از ACL برای دسترسی. کامپوننت authentication از ACL میپرسد که آیا کاربر mohsen اجازه دارد کنش update رابرای کنترلر article بکار برد یا خیر.
۷- ACL دسترسی را تشخصی میدهد. حال کامپوننت ACL با بررسی جدولهای داده تشخیص میدهد که کاربر mohsen بطور صریح به هیچکدام از صفحات این سایت بمنظور ویرایش دسترسی ندارد اما این کاربر جزء گروه ویراستارها (Editors) میباشد و هر کاربری جزء این گروه قابلیت ویرایش مقالات را دارد. بنابراین کامپوننت ACL اینگونه پاسخ میدهد: تا هنگامی که کاربر mohsen یک ویراستار است، وی مجوز ویرایش مقالات را به ارث میبرد.
۸- authentication هدایت میکند. بمحض تشخیص این دسترسی مجددا کامپوننت authentication وارد میشود تا کاربر را به صفحه درخواستی هدایت کند.
نکته کلیدی: کامپوننت ACL میبایستی با یک سیستم ورود کاربر بکار گرفته شود.
آنچه مدل بالا در این نوع از کاربرد نشان میدهد، نقش کامپوننت ACL بررسی مجوزهای خاص برای دسترسی به بخشهای مختلف سیستم است بدین دلیل میتوانیم استدلال کنیم، این کامپوننت باید با کامپوننتی در ارتباط باشد که شامل موارد زیر باشد:
- نام و کلمه عبور را ذخیره کند.
- نام و کلمه عبور را از فرم ورود بگیرد.
- نام و کلمه عبور را با مقادیر ذخیره شده تطبیق دهد.
- بمحض تطبیق موفق، نام کاربری را با اطلاعات نوع درخواست به کامپوننت ACL ارسال کند.
- صفحه در خواستی را نمایش دهد یا اینکه با توجه به مجوزی که کامپوننت ACL تعیین میکند به صفحه دیگری هدایت کند.
بنابراین میتوان دریافت کامپوننت توکار authentication یک انتخاب طبیعی برای داشتن یک سیستم ورود کاربر است. که میتواند در کنار ACL بکار گرفته شود.
انتخاب یک IDE برای cake
چرا از Eclipse استفاده میکنم؟
اول اینکه کد باز است و تعداد زیادی پلاگین برای آن نوشته شده است که همهی نیازهای یک توسعه دهندهی وب را پوشش میدهد بطوریکه با اطمینان می توان گفت این نرمافزار به تنهایی یک توسعه دهنده را راضی خواهد کرد.
دوم اینکه بزرگ و قدتمند است اما در عین حال ساده برای بکارگیری. Eclipse یک IDE خاص نیست بلکه برای طیف وسیعی از زبانهای برنامهنویسی منتشر شده است. حتی خیلی از ادیتورهایی که جدیدا عرضه میشوند بر پایهی Eclipse بنا شدهاند. از آن جمله میتوان نرمافزار Carbide.ui Theme Edition شرکت نوکیا که برای طراحی تمهای گوشیهای موبایل ساخته شده است را نام برد یا جای دوری نرویم همین Aptana که برای کار با فریمورکهای جاوااسکریپت پیشنهاد میشود.
نصب Eclipse برای PHP
Eclipse یک IDE کلی هست. در پروژهایی تحت نام PHP Development Tools معروف به PDT (ابزارهای توسعه پیاچپی) آنچه برای توسعهی پیاچپی مورد نیاز است به این IDE افزوده شده است.
براساس وب سایت PDT، پکیج All-in-One شامل مجموعه کاملی است برای آنکه بتوان بیدرنگ از PDT استفاده کرد. آخرین نسخه پایدار برای ویندوز را می توانید از اینجا دریافت کنید.
خوشبختانه نصب eclipse بسیار ساده است چرا که هیچ مرحلهای برای نصب ندارد. کافیست آن را از حالت فشرده خارج کنید و در جایی مناسب کپی کنید سپس برنامه را اجرا کنید. برای اولین اجرا احتمالا سوالی برایتان پیش خواهد آمد.
workspace چیست؟
معمولا افراد از تعریف workspace تعابیر متفاوتی دارند. من آن را فضای کاری ترجمه میکنم. workspace در حقیقت مکانی است که پروژههایتان را در آنجا نگه میدارید (در مثال ما خود فریمورک CakePHP بعنوان workspace شناخته میشود) ساده بگویم یک دایرکتوری روی هارد. برای اولین بار اجرای eclipse باید workspace را تعریف کنید.
تعریف کردن workspace
قاعده ثابتی بدین منظور وجود ندارد، اما من توصیه میکنم آن را برابر C:xampphtdocs مقداردهی کنید. همچنین از طریق منو File و Switch Workspace می توانید workspace متفاوت دیگری مشخص کنید.
منظور از پروژه (Project) در CakePHP چیست؟
همانگونه که میدانید پروژهی کاری، برنامهای که در حال توسعه دادن است تعریف میشود. در مورد CakePHP پروژهایی که در حال توسعهدادن است یک کپی از فولدر app کیک است. بنابراین نیاز داریم تا یک پروژه تعریف کنیم.
تعریف کردن پروژه در CakePHP
از منو File گزینه New و سپس PHP Project را انتخاب کنید. در صورتی که این گزینه وجود ندارد در قسمت Other و زیر شاخه PHP میتوانید PHP Project را بیابید. تنظیمات بعدی را مطابق شکل انجام دهید (برای دیدن تصاویر در سایز واقعی روی آنها کلیک کنید):
در eclipse هنگام تعریف پروژه چنانچه دایرکتوری پروژه محتوی فایل باشد پنجرهایی به شکل زیر برای تایید مسیر پروژه نمایان خواهد شد:
این پنجره هشدار میدهد که محلی که برای تعیین پروژه انتخاب کردهاید حاوی فایل است و پاک کردن پروژه در محیط eclipse فایلها را پاک خواهد نمود. با انتخاب گزینه پیشفرض یعنی گزینه دوم، برنامه در مسیر داده شده یک فولدر جدید (هم نام پروژه) میسازد و عملیات توسعه در آن انجام خواهد شد. اما از آنجایی که برای توسعه کیک میبایستی عملیات توسعه بر روی فایلهایی که از فولدر app کپی گرفتهایم انجام شود گزینه اول را انتخاب میکنیم. دقت کنید که در این حالت پاک کردن پروژه از داخل محیط IDE تمامی فایلهای آن دایرکتوری را پاک خواهد کرد. هم اکنون میبایستی در ستون سمت چپ، پروژهتان را مشاهده کنید. میتوانید هر فولدر را بسهولت باز و ساختار فایلهای آن را مشاهده کنید.
پیوند هسته کیک به پروژه
حال نوبت آن رسیده است که این پروژه را به هسته کیک پیوند دهیم. به این معنی که بتوانید از کلاسها و ثابتهای کیک (classes & constants) با قابلیت تکمیل خودکار (auto-complete) استفاده کنید. علاوه بر این میتوانید به فایلهای هسته کیک دسترسی داشته باشید. یک راهنمای دم دست!
ابتدا هسته کیک را بعنوان یک پروژه تعریف میکنیم. دقیقا شبیه قبل از منو File گزینه New و سپس PHP Project را انتخاب کنید.
مجددا در پنجره تاییدیه مسیر پروژه، گزینه اول را انتخاب کنید. حال میبایستی بین این دو پروژه پیوند برقرار کنیم بدین منظور در نمای PHP explorer بر روی پروژه اصلی (نه پروژهایی که بعنوان هسته تعریف شد) راست کلیک کرده و گزینه Configure Include Path را انتخاب میکنیم. در تب projects با انتخاب add پروژهی Cake را تیک میزنیم (دقت کنید چنانچه پروژه Cake بسته باشد در این قسمت موجود نخواهد بود)
حالا میتوانید نتیجه عملیات رو آزمایش کنید. برای برنامهایی که در نظر دارید یک کنترلر باز یا ایجاد کنید و به نمای Outline بروید. همانطور که مشاهده می کنید کلاسها، توابع و متغیرها را تشخیص داده است. حتی وراثت کلاس را به خوبی مشخص میکند بطوری که می توانید به سادگی تمام زیرشاخهها را وارسی کنید. خیلی جالبه نه! و جالب تر اینکه در ویرایشگر PHP قابلیت تکمیل خودکار خیلی هوشمندانه عمل میکنه (میتوانید با میانبر Ctrl+Space آزمایش کنید)
پیکربندی برای شناسایی فایلهای thtml یا ctp
بسته به اینکه از چه نسخهایی از کیک استفاده می کنید با فایلهایی با فرمت thtml (برای نسخه ۱.۱ کیک) و یا ctp (برای نسخه ۱.۲ کیک) که برای ایجاد نما (view) استفاده میشوند، سر و کار خواهید داشت. این فایلها در حقیقت محتوای PHP دارند. برای اینکه بتوان از قابلیت هایلایت و تکمیل کد استفاده کنیم بهتر است به روش زیر این فایلها را برای Eclipse بعنوان فایل PHP تعریف کنیم.
بدین منظور از منو Window گزینه Preferences و سپس General را انتخاب کنید. در قسمت Content types شاخهی text را باز کنید و PHP content type را انتخاب کنید. حال در قسمت file associations بر روی add کلیک کنید و *.ctp و *.thtml را در مراحلی جداگانه اضافه کنید.
حالا دوباره به preferences برگردید و اینبار Editors و از آنجا File Associations را انتخاب کنید. با انتخاب add مجددا فرمتهای فوق را اضافه کنید. سپس با انتخاب این فرمتها بطور جداگانه در قسمت Associated Editors با انتخاب add آنها را به PHP Editor بطور پیشفرض اضافه کنید. حال می توانید یک فایل با فرمت ctp در کیک ۱.۲ باز کنید و هایلایت کدها را ببینید.
پیکربندی برای طبخ کیک بطور مستقیم
این یک مجتمعسازی ماهرانه است و یکی از جالبترین بخشهایی است که میبایستی در تنظیمات eclipse لحاظ کرد. بسته به اینکه از چه نسخهایی از کیک استفاده می کنید، تنظیمات متفاوت خواهد بود:
برای نسخه ۱.۱
از منو Run گزینه External Tools و از آنجا Open External Tools Dialogue را انتخاب کنید. بر روی Program از سمت چپ، راست کلیک کنید و New را انتخاب کنید.
Apply و سپس Close کنید. حال از منوی run گزینه External tools و از آنجا Organise favourites را انتخاب و با کلیک روی add و تیک دار کردن Bake_1_1 آن را به لیست اجرا اضافه کنید.
برای نسخه ۱.۲
ابتدا میبایستی کنسول CakePHP را در ویندوز پیکربندی کنید. هر چند یک فیلم آموزشی در این مورد در اینجا موجود است اما مراحل را توضیح میدهم:
به Control Panel از آنجا System و تب Advanced بروید. Environment Variables را انتخاب و از قسمت System variables متغیر سیستمی Path را باز کنید و در فیلد Variable Value در ادامه محتویات مقادیر زیر را قرار دهید (دقت کنید قبل از وارد کردن این مقادیر، در انتهای مقدار موجود علامت سیمیکولون یعنی ; را بگذارید):
۱.
C:xamppphp;C:xampphtdocscakecakeconsole;
پنجرهها را بترتیب ok کنید. در قسمت run منوی استارت cmd را تایپ کنید تا محیط Command Prompt باز شود در خط فرمان cake تایپ کنید چنانچه پیام خوشآمدگویی کنسول کیک را مشاهده کردید پیکربندی کنسول روی ویندوز درست انجام شده است. می توانید با استفاده از دستور cd به شاخه نصب کیک بروید تا مسیرهای صحیح Current Patch را ببینید (هر چند نیازی نیست)
به Eclipse برمیگردیم. برای اینکه تنظیمات پیکربندی کنسول در محیط IDE هم لحاظ شود Eclipse را ببندید و مجدد اجرا کنید. از منو Run گزینه External Tools و از آنجا Open External Tools Dialogue را انتخاب کنید. بر روی Program از سمت چپ، راست کلیک کنید و New را انتخاب کنید.
Apply و سپس Close کنید. حال از منوی run گزینه External tools و از آنجا Organise favourites را انتخاب و با کلیک روی add و تیک دار کردن Bake_1_2 آن را به لیست اجرا اضافه کنید.
چگونه کیک php را طبخ کنیم؟
برای Bake کردن run external tool را انتخاب و برحسب نسخه کیک bake_1_1 یا bake_1_2 را اجرا کنید. از طریق منوی run و گزینه External tools نیز قابل دسترسی هستند.
اگر از کیک ۱.۲ استفاده میکنید همانطور که در تنظیمات فوق مشاهده کردید برای آدرس دایرکتوری کاری مقدار ${project_loc} را جایگزین کردیم که بطور خودکار به پروژهایی اشاره دارد که انتخاب شده است. یعنی در هنگام Bake کردن، پروژهای که انتخاب شده باشد را Bake خواهد کرد نه سایر پروژهها را. بنابراین باید دقت کنید که قبل از شروع عملیات طبخ پروژه را انتخاب کرده باشید (پروژه کاری نه پروژهایی که بعنوان هسته کیک تعریف شد)
دریافت cake php
دو راه اصلی برای دریافت یک نسخه ی جدید از CakePHP وجود دارد . شما می توانید یک نسخه ی فشرده شده (zip/tar.gz/tar.bz2) را از سایت اصلی دانلود کنید و یا کد آن را از مخزن SVN دریافت کنید.( check out کنید) برای دانلود آخرین نسخه ی اصلی منتشرشده CakePHP ، به سایت اصلی http://www.cakephp.org رجوع کنید و لینک “Download Now” را دنبال کنید. تمامی نسخه های منتشر شده ی CakePHP به وسیله ی Cakeforge که خانه ی CakePHP هست میزبانی می شود. این سایت همچنین پیوندهایی به بسیاری از پروژه های دیگر CakePHP دارد، که شامل plugin ها و برنامه های کاربردی برای CakePHP است. نسخه های منتشرشده ی CakePHP در http://cakeforge.org/projects/cakephp قابل دسترسی است. علاوه بر این ها نسخه های شبانه (nightly builds) هم تولید شده اند که اشکال زدایی شده و به روز هستند و از فهرست دانلود http://cakephp.org/downloads/index/nightly قابل دسترسی اند. برای اپدیت واقعی شما می توانید مستقیما شاخه ی توسعه از مخزن SVN را check out کنید : https://svn.cakephp.org/repo/branches/1.2.x.x .
بسیار عالی و جامع بود. سپاس
با خواندن مقاله فرم ورک cakephp چیست رو درک کردم ممنون از مقاله مفیدتون