مدونة الويب 2.0

  • الرئيسية
  • تعريف بالمدونة
  • المصادر
  • تواصل معي
  • أخبار المدونة
  • أفكار
  • إضافات
  • برمجة
  • تصميم
  • تطوير
  • فعاليات
  • كتب
  • لقاءات
  • مدونات عربية
  • مشاريع
  • مهمات
  • مواقع

بنية الكيك وأول controller

August 19, 2008 - الثلاثاء 17 شعبان 1429 التصنيف: تطوير

بسم الله الرحمن الرحيم

كنا قد تحدثنا في الأجزاء الماضية في التطوير عن:

  • تحديد التقنيات
  • تصميم قاعدة البيانات
  • تحميل وتثبيت الكيك

واليوم سنكمل في مشروع قائمة المهام حيث سنستعرض بنية الكيك بعد أن ثبتناه وربطناه مع قاعدة البيانات وسنقوم بكتابة الكود الخاص بجزء controller وهو الجزء المنطقي من بنية MVC.
تتكون بنية الكيك من مجلدين أساسيين هما app و cake، فمجلد cake يحوي جميع المكتبات والأصناف الخاصة بالكيك ولايجب بحال من الأحوال أن نعدل فيه، فعملنا سيقتصر على مجلد app حيث سيحتوي على كامل المشروع.

الأن سندخل إلى مجلد app وسنشرح بنيته بشكل مفصل:
- config: يحتوي هذا المجلد على إعدادات الموقع كلها سواء ربط قاعدة البيانات،إعدادات الكاش وحالة الموقع بشكل عام.
- controllers: سيحتوي على جميع الأصناف الخاصة بالجزء المنطقي من مشروعنا.
- locale: توضع به ملفات اللغات في حال كان الموقع بعدة لغات.
- models: يحتوي على الأصناف التي ستتعامل مع قاعدة البيانات.
- plugins: الإضافات، كلنا نعرفها … إذا أردنا صنع إضافة للموقع نضعها هنا.
- tests: نضع بها ملفات الاختبار للموقع (موضوع متقدم سنتحدث عنه لاحقاً).
- tmp: يستخدمه الكيك لعملية الكاش، حيث يخزن بداخله الملفات.
- vendors: المكتبات الخارجية التي نريد التعامل معها في هذا المجلد.
- views: الجزء الثالث من بنية (MVC)، حيث تحتوي على ملفات العرض.
- webroot: يوجد داخله العديد من المجلدات:
- css: نضع به ملفات CSS الخاصة بإظهارات الموقع.
- files: يستخدم لتخزين الملفات أي الملفات التي نريد رفعها على السيرفر.
- img: الصور الخاصة بالموقع.
- js: نضع به ملفات الجافاسكربت.
هذه تقريباً نظرة سريعة نوعاً لكن مفصلة على بنية الكيك داخل مجلد app الذي يهمنا في تطوير المشروع.

ملاحظة هامة وهي أنه مقابل كل جدول في قاعدة البيانات يجب أن يقابله:
- ملف خاص به في مجلد controllers
- ملف خاص به في مجلد models (في بعض الحالات التي نتكب بها محتويات ثابتة لا نحتاج لها الملف).
- مجلد خاص به في مجلد views حيث يحتوي المجلد على جميع ملفات الإظهار الخاصة بهذا الجدول، سنستعرضه بالتفصيل لاحقاً.

سنكتب أول controller وهو الخاص بجدول lists الآن أصبح groups. نتوجه إلى مجلد controller وننشىء ملف اسمه:
groups_controller.php
هذا الاسم يجب أن يكون بهذا الشكل أي اسم الجدول_controller واللاحقة php …
نقوم بتحرير الملف باستخدام أي برنامج تحرير ملفات … ونكتب التالي:

<? php
   class GroupsController extends AppController {
   var $name = 'Groups';
   }
?>

ماذا حصل الأن؟

  • أولاً الشفرة التي نكتبها هي PHP لذلك وضعناها داخل مجال PHP وهكذا جميع الشفرات في جزء controller حيث لانقوم بكتابة أي إظهار أو أي شفرة HTML مثلاً.
  • عرفنا صنف جديد اسمه GroupsController وهذا الصنف يرث من الصنف الأب لكل أصناف controller وهو AppController.
  • لاحظوا اسم الصنف البرمجي وهو GroupsController، يجب أن نكتب اسم الجدول في قاعدة البيانات ولكن بحرف كبير متبوعاً بكلمة Controller أيضاً بحرف كبير.

لماذا نرث من الصنف الأب AppController؟
هذا الصنف الأب يحتوي بداخله على كل الأشياء التي يستعملها الكيك في بنية controller، فهو يحتوي على جميع التوابع المهمة للتعامل مع models ومع views ومع الكثير من الأصناف الآخرى. لذلك إن لم نرث منه فسنضطر إلى كتابة هذه التوابع في كل صنف وهذا مايخالف معمارية البرمجة الغرضية التوجه OOP. أما إذا ورثنا منه فسنستخدم كل خصائصه وتوابعه بشكل سهل وبسيط.

داخل هذا الصنف عرفنا متحول اسمه name وهذا الاسم لايجب تغييره وأعطيناه قيمة Groups. هذه الخطوة مهمة لنسخة PHP4 فقط. أما بالنسبة لمستخدمي PHP5 فهي ليست ضرورية.

هذا كل شيء لليوم وغداً سنكمل إن شاء الله …

شارك هذه التدوينة:
إضافة 'بنية الكيك وأول controller' إلى Del.icio.usإضافة 'بنية الكيك وأول controller' إلى diggإضافة 'بنية الكيك وأول controller' إلى Technoratiإضافة 'بنية الكيك وأول controller' إلى Stumble Uponإضافة 'بنية الكيك وأول controller' إلى Google Bookmarksإضافة 'بنية الكيك وأول controller' إلى FaceBookإضافة 'بنية الكيك وأول controller' إلى MySpaceإضافة 'بنية الكيك وأول controller' إلى Twitterإضافة 'بنية الكيك وأول controller' إلى FriendFeed
الوسوم: الكيك, تعلم الكيك وتطوير المواقع بالبيت
أرسل هذه التدوينة لصديق أرسل هذه التدوينة لصديق
طباعة هذه التدوينة طباعة هذه التدوينة

    إقرأ أيضاً:

    • سؤال وجواب عن الكيك
    • تحميل وتثبيت الكيك
    • تصميم قاعدة البيانات
    • تحديد التقنيات
    • الشهادات

19 تعليق في “بنية الكيك وأول controller”

  1. تعلم الكيك وتطوير المواقع بالبيت | مدونة الويب 2.0: August 19, 2008 - الثلاثاء 17 شعبان 1429 في 2:22 ص

    [...] بنية الكيك وأول controller [...]


  2. sfsf: August 19, 2008 - الثلاثاء 17 شعبان 1429 في 9:14 ص

    أيوه كده أخيرا بدأنا فى الجد
    بس فى سؤالين أولا أليس من المفروض عمل ال model قبل إنشاء ال controller
    ثانيا: هل إسم الكلاس فى الكونترولر ListsController يجب أن يكون بهذه الصيغة مثل إسم الملف


  3. بسام الجفري: August 19, 2008 - الثلاثاء 17 شعبان 1429 في 9:24 ص

    شكرا لك…


  4. mohmf: August 19, 2008 - الثلاثاء 17 شعبان 1429 في 9:49 ص

    جيد خالد .
    هناك ملاحظه صغيره خاصه بموضوع التسميات في الـ CP .
    للاستفاده من مزايا الـCP , يجب اتباع نمط الاسماء الحدد فيه , مثلاً اسم الصنف الخاص بالمتحكم , يجب ان يكون بشكل جمع , ويتعمد نمط الـ CamelCased و يكون ملحوقاً بلكمه Controller .
    للمزيد , يمكن مراجعه :
    http://book.cakephp.org/view/22/cakephp-conventions

    @ بسام , سلم لي على راعي المعصوب :) ..


  5. خالد: August 19, 2008 - الثلاثاء 17 شعبان 1429 في 10:34 ص

    @sfsf: لا أهمية كبيرة في الترتيب الأن …
    @بسام: أهلاً بك
    @محمد: فعلاً ونسيتها تماماً سأعدل التدوينة الأن لأضع الملاحظة


  6. aMINE: August 19, 2008 - الثلاثاء 17 شعبان 1429 في 10:56 ص

    كل شيء واضح حتى الآن…

    لكن سؤال: هل يجب إعطاء ملف tmp الصلاحيات الكاملة عند رفعه على الخادم، بما أنه يضم ملفات الكاش، و هل يشكل ذلك أي خطر…


  7. نور: August 19, 2008 - الثلاثاء 17 شعبان 1429 في 2:51 م

    سلام خالد
    الله يوفقك ويبارك بوقتك , إن شاء الله عن قريب رح تلاقيني متابع مستمر لكيك بي اش بي , ووقتها لحق على أسئلتي إذا بتلحق :)
    سلام


  8. أبوبكر: August 19, 2008 - الثلاثاء 17 شعبان 1429 في 3:58 م

    السلام عليكم خالد
    جزاك الله خيرا على جهدك
    وجزاك الله خيرا على هذا الشرح الواضح
    أنا عموما عملت حاجة حاسس حتى الآن إنها فادتني جدا
    وجدت وصلة في صفحة التستيب لعمل مدونة بالكيك
    ووجدت شرحها في الـ Manual بتاع الكيك
    لم تأخذ مني أكثر من ساعة تقريبا ولكنها علمتني وبسهوله بعض الأساسيات التي أظنها ستساعدني على فهم ما تقوله هنا بوضوح
    نصيحتي لكل واحد أن يحاول أن يتابع طريقة العمل على المانوال ويعملها
    لمن سيجرب النصيحة لا تعمل في نفس الملف بتاع قائمة المهام أنشئ ملف جديد حتى لا تختلط عليك الأمور
    وشكرا


  9. خالد: August 19, 2008 - الثلاثاء 17 شعبان 1429 في 10:00 م

    @aMINE: إلا إذا حددت مالك الملف بواسطة الأمر chown

    @نور: أهلاً بك ومبروك المدونة

    @أبو بكر: فعلاً عندما بدأت بالكيك قبل سنة بدأت بهذه المقالة فهي مفيدة جداً


  10. MEG: September 4, 2008 - الخميس 04 رمضان 1429 في 1:13 ص

    عندي بعض الملاحظات على تعريب بعض المصطلحات

    و التي قد تختلف من مكان الى اخر مثل :

    توابع = دوال

    متحول = متغير

    لذلك افضل لو تستخدم المصطلح الاصلي :

    توابع = functions

    متحول = variable

    صنف = class

    صدقني افضل بكثير و اسهل و اسرع في الفهم :)


  11. خالد: September 4, 2008 - الخميس 04 رمضان 1429 في 1:29 م

    هممم أفضل دائماً تلافي الكلمات الأجنبية واستخدام التعريب المرادف لها حتى لو كان صعب الفهم واللفظ! على كل سأحاول قدر المستطاع أن يكون المصطلح المعرب مفهوماً للجميع واستخدام المصطلحات التي عربها فريق عرب آيز


  12. عمر الدليمي: September 8, 2008 - الاثنين 08 رمضان 1429 في 5:56 ص

    السلام عليكم. أخي الحبيب لم لا تصحح هذه التدوينة. أنت تخبرنا أن فيها أخطاء،
    أشعر أن هناك خطوات ناقصة.


  13. عمر الدليمي: September 8, 2008 - الاثنين 08 رمضان 1429 في 6:13 ص

    أتراجع عن الرد الأخير :) . يبدو أنني لم أقرأ القسم المختص بقواعد البيانات – أعلم أنني أستطيع تصميمها بنفسي ولكنني كنت أريدها منك – ولم أكن أعلم أنك وضعتها، عندما راجعت موضوع الدورة وجدتها!
    شكراً :) .

    ربما تحتاج لوضع رابط لصفحة فهرس الدورة أسفل كل تدوينة من أجل عيون الكسالى السود ;) << أنا وغيري!


  14. خالد: September 8, 2008 - الاثنين 08 رمضان 1429 في 12:40 م

    هي موجودة في أعلى التدوينة أخي عمر!


  15. الجدول الثاني tasks | مدونة الويب 2.0: October 3, 2008 - الجمعة 04 شوال 1429 في 5:46 ص

    [...] في بداية الأمر قمنا بمناقشة تحميل وتثبيت الكيك، بدأنا بأول متحكم وهو groups، وبعد ذلك أكملنا به وتناقشنا بمفهوم [...]


  16. محمد العاني: October 4, 2008 - السبت 05 شوال 1429 في 8:24 م

    اخي خالد السلام عليكم وبالنسبة للفئة التي ابتدات بها فكيفية تسمية الجدول user_list مثلا هل تكون
    User_listController ؟

    واخيرا شكرا على المجهود


  17. خالد: October 4, 2008 - السبت 05 شوال 1429 في 11:33 م

    أيضاً في تدوينة قادمة إن شاء الله. وبإذن الله غداً


  18. اصطلاحات الكيك | مدونة الويب 2.0: October 5, 2008 - الأحد 06 شوال 1429 في 4:46 ص

    [...] إحدى الجمل المشهورة لدى الخبازين (مطوري الكيك كما يحبوا أن يطلق عليهم): convention over configuration ويعنون به أنك إذا تقيدت باصطلاحات الكيك فالكيك لن يتعبك بالإعدادات كما تفعل باقي الأطر. هذه نقطة مهمة تقودنا للتساؤل عن اصطلاحات الكيك، ماهي وحالاتها المختلفة؟ شاهدنا خلال سلسلة تعلم الكيك العديد من هذه الاصطلاحات ولكن ربما اختلط على البعض وهناك أيضاً حالات لم نلتقي بها والشكر للأخ محمد العاني الذي سألني عنها. [...]


  19. خالد: October 5, 2008 - الأحد 06 شوال 1429 في 4:49 ص

    تعقيباً على سؤال الأخ محمد العاني:
    http://dev.holooli.com/2008/10/05/%D8%A7%D8%B5%D8%B7%D9%84%D8%A7%D8%AD%D8%A7%D8%AA-%D8%A7%D9%84%D9%83%D9%8A%D9%83/


شاركنا برأيك؟

الرجاء الكتابة باللغة العربية الفصحى، وإذا كنت تريد كتابة سؤال حاول البحث في غوغل أولاً فغالباً ستجد عنده الخبر اليقين.

  • الأكثر قراءة
  • الأحدث
  • الأرشيف
  • تعلم الكيك وتطوير المواقع بالبيت
  • أفضل الأدوات لرفع الملفات
  • تنظيم الوقت البرمجي
  • مقدمة في CakePHP
  • أفكار ومواقع ويب 2 شهيرة
  • لماذا غوغل شريرة!
  • الخطوط العربية
  • هل تريد أن تكسب 1000 دولار؟
  • تصميم قاعدة البيانات
  • مواقع عربية بالدروبال
    1. كتب مطلوبة
    2. إصلاح علة أمنية في دروبال 7.3 و 7.4
    3. حل المشكلة أم الترقيع؟
    4. مراجعة كتاب 50 Tips and Tricks for MongoDB Developers
    5. تعريب الوحدات الإضافية
    6. البرامج العربية
    7. تعريب الدروبال 7 – العد التنازلي للنواة
    8. تعريب الدروبال 7 – اليوم الثالث
    9. تعريب الدروبال 7 – اليوم الثاني
    10. تعريب الدروبال 7 – اليوم اﻷول
    11. تعريب الدروبال 7
    1. يونيو 2011
    2. مايو 2011
    3. أبريل 2011
    4. مارس 2011
    5. فبراير 2011
    6. يناير 2011
    7. ديسمبر 2010
    8. نوفمبر 2010
    9. أكتوبر 2010
    10. أغسطس 2010
    11. مارس 2010
    12. فبراير 2010
    13. يناير 2010
    14. ديسمبر 2009
    15. سبتمبر 2009
    16. أغسطس 2009
    17. يوليو 2009
    18. يونيو 2009
    19. مايو 2009
    20. مارس 2009
    21. فبراير 2009
    22. يناير 2009
    23. ديسمبر 2008
    24. نوفمبر 2008
    25. أكتوبر 2008
    26. سبتمبر 2008
    27. أغسطس 2008
    28. يوليو 2008
    29. يونيو 2008
    • اشترك بآخر الأخبار RSS

      Feeds Counter

      أو

    • أشارك بتعريب دروبال 7

    • أراجع كتب Oreilly

      I review for the O'Reilly Blogger Review Program
    • أفضل هدية تقدمها لي

    • تقنية الطماطم

      I Use the Pomodoro Technique
    • عشرون عام لمشروع اللينكس

      I'll be celebrating 20 years of Linux with
The Linux Foundation!
    • وسوم

      Ajax css IDE jQuery php SEO TinyMCE أخبار المدونة أذكار أطر العمل أفكار أمازون إدارة المحتوى إدارة محتوى إضافات استبيان الأجاكس الأمان الاختبارات الآلية الكيك اللغة العربية برمجة تحديثات تحميل تدوينات رمضان تصميم تطوير تعريب تعلم الكيك وتطوير المواقع بالبيت تكتيك تنظيم الوقت جوائز حديث دروبال دعاية فايرفوكس فرص عمل كتب مسابقات مشاريع مهمات مواقع نصائح هندسة برمجيات وورد بريس

    حول المدونة

    • 2008-2012 مدونة الويب 2.0.
    • يمكنك نقل المحتويات أو اقتباس أي جزء منها ويفضل ذكر المصدر.
    • من الممكن أن تساعدك خريطة الموقع.

    عروض العمل

    • يمكنك أن تناقشني حول عروض العمل للمدونات أو لمواقع الويب 2.0.
    • أيضاً يمكنك استشارتي في وضع التفاصيل لمدونة أو لفكرة مشروع جديد.
    • سيرتي الذاتية على My Linkedin Profile

    تواصل معي

    • خالد الحوراني مطور ويب 2.0
    • تابع أخباري على My Twitter account
    • أو راسلني فوراً

    Switch to our mobile site