مقدمة في CakePHP

1- ماهو الـ CakePHP؟
هو عبارة إطار عمل للغة PHP ومستوحى من الإطار الشهير Ruby on Rails، باختصار إنه إطار عمل لتسريع التطوير بلغة PHP وطريقهم بذلك هي “لا تعد اختراع العجلة” أي لا تكرر الشفرة المصدرية أكثر من مرة.
2- كيف أعرف إن كان الـ CakePHP مناسباً لي؟
- يقدم لك ذكاء، سهولة وسرعة الـ Ruby on Rails.
- هل مللت من تكرار الشفرات المصدرية لكل موقع تطوره، إذن وجدت ضالتك فهو يستخدم ميزة “لا تعد اختراع العجلة”.
- يعمل بشكل كامل في الاستضافات المشتركة لأنه لايتطلب إعدادت أو برامج إضافية.
- إذا كنت تريد توفير وقت تطوير الموقع لحد الثلث أو الربع حتى.
- إذا أردت استعمال نظام القوالب فهو يوفر لك ذلك ببنيته الثلاثية المميزة (MVC).
- إذا أردت موقع متعدد اللغات.
- إذا كنت تفضل العناوين الجميلة والصديقة (العناوين النظيفة) لمحركات البحث (بدلاً من post.php?id=2112) يكون مثلاُ (post/2112).
- إذا كانت لديك قاعدة بيانات واحدة فهو يوفر لك استعمال السابقة للجداول فيمكنك بناء عدة مواقع بقاعدة بيانات واحدة.
4- لكن ماهي البنية الثلاثية (MVC)؟
هي بنية تستخدم لتطبيقات الويب، ومبدأها الأساسي هو فصل شفرتك المصدرية إلى ثلاثة أجزاء بشكل يسهل لك تطويرها واكتشاف الأخطاء فيها ويوفر عليك الوقت أيضاً. وهذه الأجزاء هي:
- Model : كل التعامل مع قاعدة البيانات يتم في هذا الجزء، كل عمليات الإدخال، التحديث، الاختيار والتحديث في قاعدة البيانات تتم في هذا الجزء.
- View: هذا الجزء مسؤول عن الإظهارات من صفحات ويب، ملفات نصية وحتى ملفات PDF. هذا الجزء لايقوم بأية عملية منطقية ولكن يتم تمرير النتائج له لكي يعرضها فقط.
- Control: هذا الجزء مسؤول عن العمليات المنطقية كلها، كإرسال البريد الإلكتروني، رفع الملفات وهو أيضاً جسر بين الجزئين السابقين.
وهذا مخطط لهذه الأجزاء:

دعونا نشرح هذا المخطط قليلاً:
1- يقوم المستخدم بطلب صفحة ما من موقعك (مثلا: http://example.com/page/4).
2- يقوم Dispatcher بتحليل العنوان URL. لأنه كما ذكرنا يكون العنوان بشكله النظيف فيقوم Dispatcher بتفكيكه ومعرفة أجزائه (page أي المستخدم يريد صفحة، و 4 هو رقم الصفحة).
3- يقوم جزء Controller بالعمليات اللازمة ويرسل طلب لجزء Model لاستخراج بعض البيانات من قاعدة البيانات (مثلاً يرسل لها رقم عمود لاستخراجه).
4- يقوم Model بإرجاع البيانات التي طلبها Controller ويسلمها له.
5- يقوم الـ Controller بالعمليات اللازمة لهذه البيانات المستخلصة (تقوم بإرجاع معلومات هذا العمود الذي طلبناه قبل قليل) ومن ثم يسلم هذه البيانات التي تم معالجتها لجزء View.
6- يقوم جزء الـ View ببعض التنسيقات وتجميلات المظهر لهذه البيانات.
7- ثم يقوم بعرض الناتج للمستخدم.
الأن أصبحت هذه البنية واضحة، أليس كذلك؟
3- هل CakePHP أفضل من Ruby on Rails؟
إطار العمل CakePHP يستخدم البنية الثلاثية المميزة (MVC) وهي ذاتها المستعملة في Ruby on Rails، وبشكل عام لايمكن المقارنة بينهما لأن RoR تستخدم لغة Ruby بينما CakePHP تستخدم لغة PHP، لذلك إذا كانت معرفتك بالـ PHP جيدة فعليك بالـ CakePHP.
4- ماهي الميزات التي يقدمها CakePHP لي؟
- حزمة كاملة للاختبارات Test Suite تفيدك في الاختبار الآلي لموقعك واستخراج الأخطاء إن وجدت، بدل الطريقة القديمة بتجريب الموقع بشكل يدوي.
- ثلاثة أصناف (Classes) مميزة: صنف للبريد الإلكتروني ووظائفه المتعددة، صنف للبسكوتات (Cookies) والتعامل معها بسهولة رائعة، وصنف التحقيق (Authentication) لعمليات الدخول والخروج مع حماية جيدة من أنواع الاختراقات المشهورة.
- دعم أنواع مختلفة من قواعد البيانات MySQL, DB2, Oracle, Sybase, SQL Server.
- دعم تعددية اللغات أي استخدام عدة لغات في موقعك لكي يكون عالمياً.
- وعشرات الميزات الآخرى التي سأذكرها في تدوينات لاحقة.
5- ماهي متطلبات تشغيل CakePHP؟
إطار العمل هذا لايتطلب منك برامج إضافية، المطلوب هو فقط Apache و PHP 4.3.2 أو نسخة أحدث، و MySQL4 أو أحدث. ولاستعمال “العناوين النظيفة” يجب أن يكون mod_rewrite موجوداً ومفعلاً في مخدمك. CakePHP تعمل على مخدم IIS.
6- ماهي الـ scaffolding (الثقالة) وماهي وظيفتها؟
الثقالة تعني تشغيل سكربت فوق بنية قاعدة البيانات الموجودة لديك لتشغيل عدة مهام بشكل تلقائي (استعراض – إدخال - حذف).
7- هل يدعم الـ AJAX؟
نعم، بالتأكيد CakePHP يدعم AJAX باستخدام عدد من التوابع (الدوال).
8- حسناً لكن ماذا عن استخدام CSS و Javascript مع إطار العمل هذا؟
بالطبع تستطيع استخدام أي شيء خارجي ويوجد مجلدات خاصة لوضعها واستخدامها، للحفاظ على البنية الثلاثية (MVC).
9- حسناً قررت استخدامه من أين أحمله؟
من هنا حمل آخر نسخة: http://cakeforge.org/frs/?group_id=23
10- هل يوجد مواقع للمساعدة في استخدامه؟
يوجد العديد من المدونات الومواقع لمطوري هذا الإطار وسأطرحهم في مواضيع لاحقة … حالياً شاهد الدليل الرسمي فهو يغطي الكثير من المواضيع:
أو تابع دروس هذه المدونة …


[...] مقالة اليوم هي عن إطار العمل CakePHP [...]
جميل أخى مقدمة جميلة ولكن عندى سؤال لك (أو هو جزء لم توضحة)
لماذا أستعمل CakePHP ولا أستعمل Zend Framework ؟
شىء اخر هل هناك Editor ال CP مضمنة فية فيدعم ال AutoCompletion لها من غير مشاكل
شكرا مرة اخرى
بداية موفقة أخي خالد
تحياتي
@Qniq:
سأضع موضوعاً منفصلاً لمقارنة إطر العمل
Zend - CakePHP - CodeIgniter
تابعني خلال الأيام القادمة وستجد الجواب بإذن الله
وبخصوص المحرر يوجد محرر Eclipse ولكن لم يضمن داخله توابع الكيك أي عليك أن تتذكرهم بنفسك … بالمناسبة ستجد من خلال عملك به أن التوابع سهلة جداً وتذكرها سهل ولاتحتاج لمحرر ولكن تبقى فكرة المحرر جميلة وتسرع العمل
@علاء: شكراً لك وسأراك في مدونتك
درس اكثر من رائع انا من متابعينك . وصراحة اسلوبك ممتاز ويتنقل بمنطقية من نقطة لاخرى , جزاك الله كل خير
أهلاً بالأخ أحمد نورت المدونة …
شكرا لك اخي الكريم على هذا الدرس الرائع
وجزاك الله الف خير
شكراً على الموضوع
شكراً لك أخي خالد . بالفعل شيء راائع و جاري التحميل .
تحياتي
فراس
شكرا لك لكن هل به نظام القوالب داخلي ؟
ام انا اقوم باستخدام نظام قوالب خارجي ؟
الداخلي هو View وهو جزء من MVC
يمكنك استعمال نظام قوالب خارجي معه، مثل السمارتي:
http://bakery.cakephp.org/articles/view/how-to-use-smarty-with-cake-smartyview
[...] اليوم المدونة شهرها الأول فعلياً منذ طرح أول تدوينة (مقدمة في CakePHP) بعد التدوينة [...]
[...] الكود الخاص بجزء controller وهو الجزء المنطقي من بنية MVC. تتكون بنية الكيك من مجلدين أساسيين هما app و cake، فمجلد [...]
[...] :
شاكر لك و ساتبع مقالاتك فيما يتعلق بـ CakePHP
[...] ماهو phpCake؟ حسناً إكبس هنا [...]
[...] يخبر الكيك بأن يستعمل راجع النقطة السادسة في هذا المتحكم (controller) وسنجرب الخرج فوراً عبر طلب [...]
المقال جميل جدا ، شكرا لك فقد قمت بطلب كتاب Apress - cakephp و هو فى الطريق إلى - شكرا جزيلا وواصل التدوين لأنا نحتاج لأمثالك - اخوك مصطفى
أهلاً بك أخي مصطفى وماشاء الله عليك مدونة رائعة وغنية بالمعلومات المفيدة
السلام عليكم
أنا مهتم بالكيك بي أتش بي غير أني أجد مشكلة في تشغيل التطبيات عليه. حيث أني أقوم تماما بكل الخطوات لتثبيت الكيك على سيرفر محلي وعلى الويب ولكن عند محاولة تطبيق درس مثل درس (TO DO) الذي يوجد في أغلب الكتب اللي تتناول الكيك يقول لي المتصفح بأن الصفحة غير موجودة.
فهل يوجد أحد له خبرة يتفضّل بالأخذ بيدي ؟
أهلاً بك cosinus، هل تصفحت الكيك بعد فك ضغطه في المخدم المحلي وكان يعمل؟ وتأكد من أنك قد كتبت Views الخاصة بهذا المتحكم