عمومینکاتی که بایستی در مورد زبان برنامه نویسی بدانید

با cake php آشنا شویم

Cakephp چیست ؟



در سایت رسمی cakephp اینچنین آمده است:
« cake یک framework با قابلیت گسترش سریع برای php است که از الگوهای عمومی شناخته شده طراحی همانند Active Record، Association Data Mapping، Front Controller و معماری MVC استفاده می نماید.


هدف اولیه ما ایجاد یک فریم ورک ساخت یافته است که کاربران PHP در هر سطحی را قادر می سازد که بتوانند برنامه های قدرتمند تحت وب را به سرعت گسترش دهند، بدون این که از انعطاف پذیری آن کاسته شود. »






Framework چیست ؟

 فریم ورک کلکسیونی از کدها، کتابخانه ها، کلاس ها و محیط های زمان اجراست که به برنامه نویس کمک می کند تا برنامه های تحت وب خود را سریع تر و با انعطاف بیشتر بسازد.



ایده اصلی پشت استفاده از فریم ورک این است که توسعه دهنده را آماده کند تا بر اساس یک ساختار اولیه و با استفاده از عواملی که عموما مورد استفاده قرار می گیرند، برنامه کاربردی خود را بنا کند. اکثر برنامه نویسان کارکشته و با تجربه PHP، کتابخانه ها و ساختارهایی را برای گسترش سریع تر برنامه های خود تدارک می بینند و در پروژه های مختلف از آن ها بهره می گیرند، اما ایجاد یک برنامه کاربردی تحت وب بر مبنای یک Framework متن باز همانند cakePHP، مزایای مشهود خود را دارد. به این ترتیب توسعه دهندگان و برنامه نویسان علاوه بر تجارب خود قادرند از تجارب سایر برنامه نویسان نیز سود جسته و بکار بندند.



مهمترین مزایای استفاده از CakePHP در توسعه برنامه های کاربردی تحت وب و سایت ها را می توان موارد زیر برشمرد:
– پشتیبانی از الگوهای طراحی رایج (Design Patterns)
– توسعه سریع تر وب
– سازگاری با نگارش های ۴و۵ PHP
– متن باز و مجانی بودن
– ساختارهای کد اصلاح شده
پشتیبانی از الگوهای طراحی رایج:



الگوی طراحی (Design Pattern) راه حلی کلی برای مشکلات رایج در برنامه نویسی وب است. الگوی طراحی کد کامل نیست بلکه راهکاری برای حل مشکل است که در شرایط گوناگون مورد استفاده قرار می گیرد. در برنامه نویسی تحت وب الگوهای طراحی زیادی برای حل مشکلات رایج که اکثرا تکراری نیز می باشند، وجود دارد. cakePHP تعداد زیادی از این الگوهای طراحی را به صورت توکار و یکپارچه شده پشتیبانی می نماید.



برخی از این الگوها که اشاره نیز شد عبارتند از :



Active Record ، Front Controller ، Association Data Mapping و معماری MVC.
در بین موارد مذکور معماری MVC که بر اساس مدل (Model)، نما (View) و کنترل کننده (Controller) استوار است، در هسته cakePHP موجود بوده و در واقع ستون فقرات cakePHP را تشکیل می دهد.



توسعه وب به صورت سریع:



یکپارچگی الگوهای طراحی در cakePHP به این معنی است که توسعه دهندگان و برنامه نویسان دیگر درگیر حل مشکلاتی که عموما در هنگام پیاده سازی پروژه های تحت وب بروز می کند، نخواهند گردید. چون همه این مسائل در cakePHP قبلا حل شده و توسعه دهندگان فقط بر روی منطق تجاری یا روند اصلی در هدف نرم افزار کاربردی تحت وب خود متمرکز گشته و بالطبع کارشان سریع تر پیش خواهد رفت.



سازگاری با نگارش های ۴ و ۵ PHP :
cakePHP با هر دو نگارش ۴ و ۵ 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) برنامه کاربردی در نظر گرفت.

چرا از فریم ورک کیک باید استفاده کنیم ؟



یکی از سوالاتی که ذهن برنامه نویس را به خودش مشغول خواهد ساخت این است که از میان فریم ورک های موجود برای زبان برنامه نویسی php همانند: Codeigniter,Symphony و …. چرا باید از فریم ورک کیک برای پیاده سازی پروژه های خود برگزینیم؟



مهمترین دلیل استفاده از فریم ورک کیک را میتوان به عدم نیاز به یادگیری و استفاده از دستورات پیچیده برنامه نویسی ، آرایه ها، توابع و … توسط توسعه دهنده را اشاره نمود. در واقع می توان گفت برای پیاده سازی برنامه های تحت وب تنها نیاز به ساختار کلی پایگاه داده نیاز است و روابط و ایجاد مدل ها، صفحات و کنترل کننده ها همگی بر اساس سوالاتی که توسط این فریم ورک و براساس تعلق داشتن و روابط جداول از کاربر پرسیده می شود، به راحتی و بدون دخالت کاربر ساخته می شود.



مهمترین مزایای استفاده از cakephp در توسعه برنامه های کاربردی تحت وب و سایت ها را می توان موارد زیر برشمرد:



۱. پویا و جامعه دوستانه
۲. انعطاف پذیری کدها
۳. برنامه ساختارمند
۴. معماری VC
۵. درخواست  های توزیع با آدرس های کوتاه ، سفارشی
۶. قالب سریع و انعطاف پذیر
۷. راهنما برای نمایش آژاکس، جاوا اسکریپت، فرم ها و امکانات شامل: ایمیل، کوکی، امنیت، جلسه،
۸. انعطاف پذیری توسط ACL
۹. کش انعطاف پذیر
۱۰. محلی سازی
۱۱. بدون نیاز به پیکربندی آپاچی و کارکردن با استفاده از هر سرویس دهنده وب
۱۲. پشتیبانی از الگوهای طراحی رایج Design Patterns
۱۳. توسعه سریع تر وب
۱۴. سازگاری با نگارش های ۴ و ۵ php
۱۵. متن باز و مجانی بودن
۱۶. ساختارهای کد اصلاح شده


آنچه برای شروع کار با کیک مورد نیاز است

۱) سرور HTTP،‌ با rewrite فعال (برای کاربرپسند کردن URL‌ها )


۲) پی‌‌اچ‌پی ۴.۳.۲ یا بالاتر، کیک پی‌اچ‌پی با نسخه‌های ۴ و ۵ پی‌اچ‌پی کاملاً سازگار است.


برای اجرای کیک موارد فوق کافی است اما در مورد ساخت لینکدونی به یک پایگاه داده نیاز داریم. ترجیحاً از MySQL استفاده می‌کنیم. لازم به ذکر است، CakePHP علاوه بر MySQL از پایگا‌ه‌های داده زیر پشتیبانی می‌کند:


PostgreSQL| Firebird DB2 | Microsoft SQL Server | Oracle | SQLite | ODBC







کیک کاملاً رایگان و کد‌باز است. به دو طریق می‌توانید آخرین نسخه از آن را دریافت کنید. اول اینکه یک نسخه فشرده شده‌ی (zip/tar.gz/tar.bz2) آن را از اینجا بگیرید یا از مخزن SVN (برای سری ۱.۲.x.x از اینجا) استفاده کنید. تمامی متعلقات کیک در پروژه‌ای بنام CakeForge جمع آوری شده است. دریافت مستقیم کیک بهمراه مستندات نسخه‌های ۱.۱ و ۱.۲ آن در اینجا موجود است. در این آموزش از سری ۱.۲ این فریم‌ورک استفاده می کنیم.



پس از دریافت کیک آن را به وب سرور خود منتقل کنید ساختار فولدر‌های  کیک به صورت زیر است:





از فولدر App شروع می‌کنیم، این همان فولدری است که بیشترین کار توسعه پروژه‌ در آن انجام می شود. هر چند نام فایل‌ها و فولدر‌های موجود در این شاخه گویای همه چیز است اما اجازه دهید نگاه دقیقتری به محتویات آن داشته باشیم:






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 را تعریف کنید.

Defining workspace






تعریف‌ کردن workspace



قاعده ثابتی بدین منظور وجود ندارد، اما من توصیه می‌کنم آن را برابر C:xampphtdocs مقدار‌دهی کنید. همچنین از طریق منو File و Switch Workspace می توانید workspace متفاوت دیگری مشخص کنید.






پروژه (Project) چیست؟



همانگونه که می‌دانید پروژه‌ی کاری، برنامه‌ا‌‌ی که در حال توسعه دادن است تعریف می‌شود. در مورد CakePHP پروژه‌ایی که در حال توسعه‌دادن است یک کپی از فولدر app کیک است. بنابراین نیاز داریم تا یک پروژه تعریف کنیم.






تعریف کردن پروژه



از منو File گزینه New و سپس PHP Project را انتخاب کنید. در صورتی که این گزینه وجود ندارد در قسمت Other و زیر شاخه PHP می‌توانید PHP Project را بیابید. تنظیمات بعدی را مطابق شکل انجام دهید (برای دیدن تصاویر در سایز واقعی روی آن‌ها کلیک کنید):


Defining projects



در eclipse هنگام تعریف پروژه چنانچه دایرکتوری پروژه محتوی فایل باشد پنجره‌ایی به شکل زیر برای تایید مسیر پروژه نمایان خواهد شد:


project location verification



این پنجره هشدار می‌دهد که محلی که برای تعیین پروژه انتخاب کرده‌اید حاوی فایل است و پاک کردن پروژه در محیط eclipse فایل‌ها را پاک خواهد نمود. با انتخاب گزینه پیشفرض یعنی گزینه دوم، برنامه در مسیر داده شده یک فولدر جدید (هم‌ نام پروژه) می‌سازد و عملیات توسعه در آن انجام خواهد شد. اما از آنجایی که برای توسعه کیک می‌بایستی عملیات توسعه بر روی فایل‌هایی که از فولدر app کپی گرفته‌ایم انجام شود گزینه اول را انتخاب می‌کنیم. دقت کنید که در این حالت پاک کردن پروژه از داخل محیط IDE تمامی فایل‌های آن دایرکتوری را پاک خواهد کرد. هم اکنون می‌بایستی در ستون سمت چپ، پروژه‌تان را مشاهده کنید. می‌توانید هر فولدر را بسهولت باز و ساختار فایل‌های آن را مشاهده کنید.





پیوند هسته کیک به پروژه



حال نوبت آن رسیده است که این پروژه را به هسته کیک پیوند دهیم. به این معنی که بتوانید از کلاس‌ها و ثابت‌های کیک (classes & constants) با قابلیت تکمیل خودکار (auto-complete) استفاده کنید. علاوه بر این می‌توانید به فایل‌های هسته کیک دسترسی داشته باشید. یک راهنمای دم دست!
ابتدا هسته کیک را بعنوان یک پروژه تعریف می‌کنیم. دقیقا شبیه قبل از منو File گزینه New و سپس PHP Project را انتخاب کنید و سپس مطابق شکل زیر عمل کنید:

Defining Cakephp core project



مجددا در پنجره تاییدیه مسیر پروژه، گزینه اول را انتخاب کنید. حال می‌بایستی بین این دو پروژه پیوند برقرار کنیم بدین منظور در نمای PHP explorer بر روی پروژه اصلی (نه پروژه‌ایی که بعنوان هسته تعریف شد) راست کلیک کرده و گزینه Configure Include Path را انتخاب می‌کنیم. در تب projects با انتخاب add پروژه‌ی Cake را تیک می‌زنیم (دقت کنید چنانچه پروژه Cake بسته باشد در این قسمت موجود نخواهد بود)


حالا می‌توانید نتیجه عملیات رو آزمایش کنید. برای برنامه‌ایی که در نظر دارید یک کنترلر باز یا ایجاد کنید و به نمای Outline بروید. همانطور که مشاهده می کنید کلاس‌ها، توابع و متغیر‌ها را تشخیص داده است. حتی وراثت کلاس را به خوبی مشخص می‌کند بطوری که می توانید به سادگی تمام زیرشاخه‌ها را وارسی کنید. خیلی جالبه نه! و جالب تر اینکه در ویرایشگر PHP قابلیت تکمیل خودکار خیلی هوشمندانه عمل می‌کنه (می‌توانید با میان‌بر Ctrl+Space آزمایش کنید)

Linking Project to core in IDE



پیکربندی برای شناسایی فایل‌های thtml یا ctp
بسته به اینکه از چه نسخه‌ایی از کیک استفاده می کنید با فایل‌هایی با فرمت thtml (برای نسخه ۱.۱ کیک) و یا ctp (برای نسخه ۱.۲ کیک) که برای ایجاد نما (view) استفاده می‌شوند، سر و کار خواهید داشت. این فایل‌ها در حقیقت محتوای PHP‌ دارند. برای اینکه بتوان از قابلیت های‌لایت و تکمیل کد استفاده کنیم بهتر است به روش زیر این فایل‌ها را برای Eclipse بعنوان فایل PHP تعریف کنیم.


بدین منظور از منو Window گزینه Preferences و سپس General را انتخاب کنید. در قسمت Content types شاخه‌ی text را باز کنید و PHP content type را انتخاب کنید. حال در قسمت file associations بر روی add کلیک کنید و *.ctp و *.thtml را در مراحلی جداگانه اضافه کنید.


recognise thtml or ctp files



حالا دوباره به preferences برگردید و اینبار Editors و از آنجا File Associations را انتخاب کنید. با انتخاب add مجددا فرمت‌های فوق را اضافه کنید. سپس با انتخاب این فرمت‌ها بطور جداگانه در قسمت Associated Editors با انتخاب add آن‌ها را به PHP Editor بطور پیشفرض اضافه کنید. حال می توانید یک فایل با فرمت ctp در کیک ۱.۲ باز کنید و های‌لایت کدها را ببینید.





پیکربندی برای طبخ کیک بطور مستقیم


این یک مجتمع‌سازی ماهرانه است و یکی از جالبترین بخش‌هایی است که می‌بایستی در تنظیمات eclipse لحاظ کرد. بسته به اینکه از چه نسخه‌ایی از کیک استفاده می کنید، تنظیمات متفاوت خواهد بود:





برای نسخه ۱.۱



از منو Run گزینه External Tools و از آنجا Open External Tools Dialogue را انتخاب کنید. بر روی Program از سمت چپ، راست کلیک کنید و New را انتخاب کنید. تنظیمات تب main را مطابق شکل زیر لحاظ کنید:

bake script 1_1

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 را انتخاب کنید. تنظیمات تب main را مطابق شکل زیر لحاظ کنید:

bake script 1_2

Apply و سپس Close کنید. حال از منوی run‌ گزینه External tools و از آنجا Organise favourites را انتخاب و با کلیک روی add و تیک دار کردن Bake_1_2 آن را به لیست اجرا اضافه کنید.


چگونه کیک را طبخ کنیم؟



برای Bake کردن run external tool را انتخاب و برحسب نسخه کیک bake_1_1 یا bake_1_2 را اجرا کنید. از طریق منوی run و گزینه External tools نیز قابل دسترسی هستند.
اگر از کیک ۱.۲ استفاده می‌کنید همانطور که در تنظیمات فوق مشاهده کردید برای آدرس دایرکتوری کاری مقدار ${project_loc} را جایگزین کردیم که بطور خودکار به پروژه‌ایی اشاره دارد که انتخاب شده است. یعنی در هنگام Bake کردن، پروژه‌ای که انتخاب شده باشد را Bake خواهد کرد نه سایر پروژه‌ها را. بنابراین باید دقت کنید که قبل از شروع عملیات طبخ پروژه را انتخاب کرده باشید (پروژه کاری نه پروژه‌ایی که بعنوان هسته کیک تعریف شد)


حال با کنسول CakePHP بسادگی می‌توانید پروژه‌های جدید ایجاد کنید، مدل، کنترلر و نما بسازید و دیتابیس را پیکربندی کنید. امیدوارم طباخی یاد داشته باشید. چون توضیح این قسمت خارج از حوصله من است اگر مشکلی داشتید مطرح کنید.


در ادامه این مطلب در پست‌های آینده، دسترسی به پایگاه داده MySQL به کمک پلاگ‌‌این QuantumDB و همچنین افزودن پشتیبانی از Subversion به کمک پلاگ‌ین Subclipse توضیح داده خواهد شد.



دریافت 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 .

به این نوشته امتیاز دهید
به این نوشته امتیاز دهید
[Total: 0 Average: 0]

با کارت بانکی باشگاه ایران هاست پولتان به حسابتان باز می گردد.

همین حالا رایگان عضو شوید

مدیر بلاگ

مشخصات مدیر

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

همچنین ببینید

بستن
دکمه بازگشت به بالا
بستن
بستن