در پست قبل با فریمورک قدرتمند CakePHP و ساختار MVC آشنا شدیم. از آنجایی که فراگیری این ساختار جز با تمرین و در عمل ممکن نیست، در این پست و پستهای آتی قصد داریم یک پروژهی کوچک را با این فریمورک مرحله به مرحله با هم دنبال کنیم. در ابتدا ساخت یک لینکدونی ساده که قابلیت افزودن، ویرایش و حذف لینک را دارد هدف نهایی است و در مرحله بعد در صورتیکه فرصت محدودم اجازه بیشتری بدهد قابلیتهای دیگری نظیر شمارش کلیک، دستهبندی و امکان نظردهی افزوده خواهد شد.
1) سرور HTTP، ترجیاً Apache با mod_rewrite فعال (برای کاربرپسند کردن URLها و کار با فایلهای htaccess بهتر است قابلیت mod rewrite را فعال کنید. بدین منظور میبایستی فایل httpd.conf سرور آپاچی را ویرایش کنید)
2) پیاچپی 4.3.2 یا بالاتر، کیک پیاچپی با نسخههای 4 و 5 پیاچپی کاملاً سازگار است. برای نصب PHP تحت ویندوز خواندن این مطلب پیشنهاد میشود.
برای اجرای کیک موارد فوق کافی است اما در مورد ساخت لینکدونی به یک پایگاه داده نیاز داریم. ترجیحاً از MySQL استفاده میکنیم. برای نصب و راهاندازی مای اسکیوال سرور، خواندن این مطلب پیشنهاد میشود. لازم به ذکر است، CakePHP علاوه بر MySQL از پایگاههای داده زیر پشتیبانی میکند:
- PostgreSQL| Firebird DB2 | Microsoft SQL Server | Oracle | SQLite | ODBC
برای راحتکار کردن با MySQL بهتر است از رابط تحت وب phpmyadmin استفاده کنید یا با استفاده از رابط گرافیکی MySQL GUI Tools دیتابیس را مدیریت کنید.
کیک کاملاً رایگان و کدباز است. به دو طریق میتوانید آخرین نسخه از آن را دریافت کنید. اول اینکه یک نسخه فشرده شدهی (zip/tar.gz/tar.bz2) آن را از اینجا بگیرید یا از مخزن SVN (برای سری 1.2.x.x از اینجا) استفاده کنید. تمامی متعلقات کیک در پروژهای بنام CakeForge جمع آوری شده است. دریافت مستقیم کیک بهمراه مستندات نسخههای 1.1 و 1.2 آن در اینجا موجود است. در این آموزش از سری 1.2 این فریمورک استفاده می کنیم.
پس از دریافت کیک آن را به وب سرور خود منتقل کنید ساختار فولدرها و فایلهای بیس کیک به صورت زیر است:

از فولدر App شروع میکنیم، این همان فولدری است که بیشترین کار توسعه پروژه در آن انجام می شود. هر چند نام فایلها و فولدرهای موجود در این شاخه گویای همه چیز است اما اجازه دهید نگاه دقیقتری به محتویات آن داشته باشیم:
Config فایلهای مربوط به پیکربندی برنامه معمولا در اینجا قرار دارند. دقت کنید این فایلها تنظیمات مربوط به هسته فریم ورک را شامل نمیشود (تنها تنظیمات مختصری در مورد پروژهی کاریمان نظیر جزییات اتصال به پایگاه داده، محل قرار گیری فایلها روی سرور و …)
Controllers کنترلگرها و مولفههای (کامپونتهای) پروژه در این فولدر قرار خواهند گرفت. پیش از این گفتیم کنترل کننده (کنترلر) درخواستهایی که توسط کلاینت ایجاد شده را بررسی و به یه مسیر صحیح هدایت می کند.
Locale برای فایلهای مربوط به بومیسازی پروژه مورد استفاده قرار میگیرد. برای مثال قصد دارید پروژهای را شروع کنید که به چند زبان مختلف موجود باشد، فایلهای حاوی سایر زبانها در اینجا قرار میگیرند.
Models مدلهای پروژه در این فولدر قرار خواهند گرفت. قبلاً گفتیم که که مدلها به نوعی به داده برنامه اشاره دارد. معمولاً جداول پایگاههای داده در اینجا مورد بحث قرار میگیرند بطوریکه به ازای هر جدول پایگاه داده، یک فایل در این فولدر قرار خواهد گرفت که بدان جدول اشاره دارد.
Plugins پکیجهای پلاگین چنانچه در صورت نیاز برای پروژه نوشته شود در اینجا قرار خواهد گرفت. پس از اتمام پروژه می توانید افزونههایی بنویسید که بدون تغییر اساسی در پروژه قابلیتهای جداگانهای بدان اضافه کند.
Tmp در این فولدر اطلاعات تمپ (موقتی) ذخیره میشوند. نحوه ذخیره اطلاعات به تنظیمات کیک بستگی خواهد داشت، اما بطور معمول توضیحات مدل، فایلهای ثبت وقایع و گاهی اوقات اطلاعات نشستها در این فولدر ذخیره میشوند.
Vendors کلاسها یا کتابخانههایی که توسط شخص برنامهنویس برای استفاده در برنامه نوشته میشوند باید در اینجا قرار بگیرند. جلوتر خواهید دید که بایک تابع توکار براحتی میتوانید این محتویات را به پروژه الحاق و از آنها استفاده کنید.
Views صفحات بصری که به نوعی با کاربر در ارتباط است شامل صفحات مربوط به طرحبندی، عناصر، خطاها، راهنماها در اینجا قرار میگیرند.
Webroot در نهایت این فولدر در نصب برنامه میبایستی به عنوان root (شاخه اصلی) پروژه بکار گرفته شود. همچنین این فولدر فایلهای مربوط به CSS، تصاویر و جاوااسکریپت را در بر خواهد داشت.
به فولدر اصلی برمیگردیم. دو فولدر cake و vendors هسته این فریمورک را تشکیل میدهند و همین اندازه آشنایی با این دو فولدر برای کار با این فریمورک کافی است (اگر مشتاقید به جمع توسعه دهندگان این فریمورک بپوندید مستندات کیک درمورد توابع و کلاسهای سازنده هسته کاملاً روشن است)
هر چند توضیحات ساختاری فایلها و فولدرها می توانست بیش از این به تفصیل بیان شود اما بعلت کمبود وقت و دورشدن از هدف اصلی از آنها عبور میکنیم .
یک فولدر بنام cake در وب سرور میسازیم و محتویات کیکپیاچپی را به آن منتقل میکنیم. در مرورگر آدرس دایرکتوری که فایلهای پروژه در آن قرار دارد به صورت زیر خواهد بود:

اگر وب سرور را اجرا کرده باشید پس از ارسال درخواست صفحهی خوش آمد کیک را مشاهده خواهید نمود. چنانچه چیدمان مطالب موجود آرایش منظمی ندارد (صفحه فاقد تصویر و استایل است)، احتمالاً mod rewrite سرور فعال نیست. بدین منظور فایل httpd.conf وب سرور آپاچی را با یک ویرایشگر متن با کرده و بدنبال خط زیر بگردید و با حذف علامت # از ابتدای خط، mod_rewrite.so را به ماژولهای وب سرور اضافه کنید. حال وب سرور را ریستارت کنید و صفحه را ریفرش کنید مشکل باید حل شده باشد.
#LoadModule rewrite_module modules/mod_rewrite.so
برای اجرای صحیح کیک بطور پیشفرض، تاکید بر این است که mod rewrite سرور فعال باشد اما چنانچه بنا به دلایلی نخواستید این ماژول را به وب سرور اضافه کنید، میبایستی تمامی فایلهای htaccess را از فولدرهای کیک حذف کنید و در فایل app/config/core.php با حذف علامت کامنت (//) از ابتدای خط زیر، کیک را بدون mod rewrite اجرا کنید:
Configure::write('App.baseUrl', env('SCRIPT_NAME'));
برای اولین مرتبه که کیک راهاندازی میشود، در صفحه اصلی هشدارهایی را خواهید دید. در نسخه 1.2 کیک، استایل بکار رفته با رنگهای زرد و سبز، کاربر را راهنمایی میکند. ابتدا فایل app/config/core.php را باز کنید. Security.salt را پیدا کنید و آن را به دلخواه تغییر دهید (می توانید دو سه کاراکتر آن رشته را تغییر دهید) این یک رشته تصادفی است که کیک برای رمزنگاری از آن استفاده میکند تا هنگامی که مقدار پیشفرض آن را تغییر ندهید خطای زرد رنگ مبنی بر تغییر آن در صفحه اصلی وجود خواهد داشت.
خطای زرد رنگ دیگری که در این صفحه خواهید دید مربوط به تنظیمات پایگاه داده است. بمنظور رفع آن فایل app/config/ database.php.default را به database.php تغییر نام دهید. پایگاه دادهای بنام linkdump درMySQL بسازید و بمنظور ارتباط پایگاه داده به کیک فایل database.php را باز کنید و آرایه default را با آنچه قبلاً در نصب پایگاه داده وارد کردهاید تنظیم کنید:
var $default = array( 'driver' => 'mysql', 'persistent' => false, 'host' => 'localhost', 'login' => 'root', 'password' => 'nbuser', 'database' => 'linkdump', 'prefix' => '', );
خطای دیگری که ممکن است موجود باشد مربوط به فولدر app\tmp است. قبلاً گفتیم که tmp برای ذخیرهی فایلهای موقتی نظیر ثبت وقایع و نشستها استفاده میشود از این رو میبایستی مجوز آن را طوری تعیین کنید که قابلیت نوشتن در فولدر فعال باشد. در صورتی که موارد فوق را درست انجام داده باشید صفحهی اصلی کیک به صورت زیر خواهد بود:
در پست بعدی سایر مراحل را دنبال خواهیم کرد.
ادامه: ساخت لینکدونی با CakePHP (بخش دوم) و (بخش سوم)
پارسا
دستت درد نکنه که از دانش خودت بقیه رو بی نصیب نمیزاری ، تواین مملکت که استاد دانشگاه جونش در میاد چیزی غیر از اونکه میخواد یاد بده.
ممنون
October 23, 2008 at 6:12 pm
علی
کار خیلی خوبی رو شروع کردی.
خیلی کمک میکنه که php کارهای ایرانی که اکثرا به روش اسپاگتی کد مینویسند با معماری MVC و اصولی کد نوشتن آشنا بشن.
October 23, 2008 at 9:02 pm
هومن
واقعا” لذت میبرم از آموزش هاتون. صرفا” خواستم تشکر کنم
October 28, 2008 at 1:04 am
محمد
دمت گرم
عالیه
November 17, 2008 at 4:50 pm
حامد
خیلی عالی بود من با اینکه کیک رو نصب کرده بودم ولی بیان خوبتون باعث شد تا آخرشو بخونم.تشکر
November 19, 2008 at 3:58 pm
هدی
بسیار متشکر
February 8, 2009 at 5:58 pm
هدی
خسته نباشین
February 8, 2009 at 6:00 pm
aria
salam sharmande farsi neminevisam
man roe linke haii ke dade bodin clik kardam site haebaz shodan ke halate file manager bodan va hichi barae download nabod
lotfan linke mostaghime downloadesh ro bezarin
mamnon
February 13, 2009 at 12:27 am
aria
gereftamesh mer30
February 13, 2009 at 12:34 am
سردرگمی میان Frameworkهای PHP - کدام یک را باید برگزید؟ | نگاه
[…] برای خواندن یک آموزش فارسی خوب برای کار با این برنامه رک: الوان وب […]
March 1, 2009 at 9:49 am
Alvanweb » نحوه کارکرد سیستم تصدیق هویت در CakePHP
[…] سپس کار با کامپونت ACL را فرا میگیرد در نهایت در مثال ساخت لینکدونی با CakePHP که در همین وبلاگ آموزش داده شد از این دو کامپونت […]
March 5, 2009 at 9:49 am
رامين
مقاله جالبي نوشتي ضمنا براي فعال كردن ماژول rewrite حتما با AllowOverride None به AllowOverride ALL تغيير پيدا كنه
March 29, 2009 at 12:23 am
عابدی
خیلی خوبه
April 13, 2009 at 1:08 am
سردرگمی میان Frameworkهای PHP – کدام یک را باید برگزید؟
[…] برای خواندن یک آموزش فارسی خوب برای کار با این برنامه رک: الوان وب […]
March 4, 2010 at 6:58 pm
دست نوشته های سعید فراهانی – طراح وب و برنامه نویس پی اچ پی (PHP) / پرل (Perl) » سردرگمی میان Frameworkهای PHP – کدام یک را باید برگزید؟
[…] برای خواندن یک آموزش فارسی خوب برای کار با این برنامه رک : الوان وب […]
December 21, 2010 at 10:37 pm
مهدیه
عالیه,من تازه کار با کیک رو شروع کردم اموزشتون خیلی مفیده
April 21, 2011 at 2:53 pm
حامد
سلام واقعا عالی بود . امید وارم که این آموزش ها رو ادامه بدید .
September 30, 2011 at 11:36 am
saleh
سلام بسیار یسیار tanx
September 9, 2012 at 8:55 pm
مینا
مرسی عالی بود…
January 27, 2013 at 11:13 pm
ali
خیلی خیلی متشکر
February 11, 2013 at 12:37 am
الیاس
با سلام
خیلی خیلی تجربه شیرینی بود برام بخدا بعد از چند وقت جستجو امروز تازه فهمیدم کیک چییه و چقدر جذابه همینطور که تو پست های قبلی میبینیم همه دوستان صمیمانه تشکر کردن و همه هم منتظر اموزش های جدیدن
امیدوارم دل اینهمه کاربر رو نشکنید و اموزش های جدید بزارید
ممنونم از اینکه این همه ساده و جذاب توضیح دادین خــــــــــــــــــــــلی ممنون
June 20, 2014 at 8:17 pm
احمد
عالییییییی بووووووووووووووووووووووووووووووووووووووووود
January 10, 2015 at 6:26 pm
مهرداد
لایک داری
January 14, 2015 at 8:23 pm
نـــــــــNedaـــــــدا
سلام مرسی از آموزش برای لینکدونی وردپرس آیا افزونه ای هست ؟
April 29, 2020 at 2:25 pm