السبت , ديسمبر 7 2019
الرئيسية / تدوينات برمجية / مقدمة وشرح كيف تم تصميمه وكيف يعمل Cakephp 3.4

مقدمة وشرح كيف تم تصميمه وكيف يعمل Cakephp 3.4

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

كما أسلفت في التدوينة السابقة أنني من محبين اطار العمل Cakephp واغلب مشاريعي مبنيه عليه بشكل رئيسي  لذلك قررت الكتابه عنهُ قليلاً ليستفيد الآخرين . إن Cakephp مصمم ليجعل أغلب عمليات تطوير تطبيقات الويب بسيطة وسريعة وذلك من خلال توفير جميع الادوات والمكتبات الأساسية التي يحتاجها اي برنامج في مكان واحد . الهدف من هذه التدوينة هو التعريف بـ اطار العمل Cakephp من مختلف الجوانب وايضاً شرح المبدئ القائم عليه هذا الاطار وكيف تم تصميمه .

مثل أي مشروع آخر Cakephp يحتوي على طبقات اساسية من ضمنها التسمية (Naming convetions ) تغطي اسماء الكائنات Class و اسماء الملفات و جداول قاعدة البيانات و غيرها من الاشياء مثل Plugins وهذا الكلام يعني أنك اذا قررت البدء باستخدام Cakephp يجب ان تتبع منهج معين في تسمية الملفات و جداول قاعدة البيانات وغيرها وذلك لأن اطار العمل صمم ليقرأ و ينظم هذه الاسماء بطريقة عجيبة و جميلة , لذلك أهم الاساسيات التي يجب ان تفهمها أن الاسماء مهمة في اي مشروع تقوم ببرمجته باستخدام هذا الاطار . يُطلق على منهج تسمية الملفات بـ Naming Conventions وإن شاء الله سوف اتناول هذا الشيء في تدوينة منفصلة أشرح فيها كيفية تسمية الملفات في Cakephp وكيفية التعامل مع مختلف حالات الاسماء وحل مشاكلها .

كما اوضحت سابقاً Cakephp مبني على تركيبة اساسية أهمها Naming conventions وايضا يحتوي على طبقة اخرى تسمى Model Layer وسوف اشرحها الآن

 

طبقة Model :

طبقة المودل مسؤولة عن البيانات في البرنامج بمعنى آخر مسؤولة عن قاعدة البيانات وكل ما يخص البيانات في قاعدة البيانات فهي المسؤولة عن جميع العمليات التي تتم في قاعدة البيانات و Logic الخاص بها . أحد اشهر المهام الخاصة بهذه الطبقة طلب البيانات من قاعدة البيانات و ارسال بيانات الى قاعدة البيانات و تحديثها , ما يجب ان نتذكره هو أي شيء يتعلق في اخذ و تحديث بيانات في قاعدة البيانات فأنهُ من شأن Model Layer لذلك حتى في تركيبة الملفات سوف تجد ملف اسمه Model وهذه فائدته . أيضاً هناك فوائد اخرى لهذه الطبقة مثل التأكد من صحة البيانات وانها مطابقة للشروط Validation وايضاً عمل العلاقات بين الجداول ان وجدت.

لو أخذنا مثال على نظام شبكة اجتماعية مثلا فإن Model Layer مسؤولة عن حفظ بيانات المستخدم في قاعدة البيانات و ايضا حفظ معلومات الاصدقاء و العناوين وكل شيء مرتبط بجدول المستخدم ومثال على استخدام احد كلاسات هذه الطبقة انظر الى هذا الكود

 

 

لا داعي للقلق هذا مجرد مثال بسيط وليس مهم ان تفهم السطر البرمجي الآن مباشرتاً ولكن لربما لاحظت انه لا داعي لكتابة اي كود قبل بداية التعامل مع البيانات التي تخص المستخدم وانما مباشرتاً طلبنا البيانات و اخرجناها من خلال حلقة تكرار , هذا ما يميز اطار العمل انظر كم سطر كتبنا وفي المقابل نحن الآن انتهينا من كتابة Sql Query كاملة تخص المستخدم وتجلب بياناته , في الحقيقة في هذا المثال نحن نستخدم كلاس TableRegistry ويحتوي على جميع الدوال اللازمة و يقوم بتنفذيها بشكل تلقائي عوضاً عنك !

الآن دعني اضرب لك مثال آخر على اضافة مستخدم جديد

 

وهكذا استطعنا اضافة سجل جديد في قاعدة البيانات وبكل سهولة , هذا فقط مثال للتوضيح وسوف نخوض تفاصيل هذا الاطار في تدوينات قادمة باذن الله تعالى .

اتوقع انك الآن فهمت فائدة Framework وبالتحديد Cakephp وأرجع مرة اخرى الى الاكواد السابقة , يجب ان تعلم ان الكود السابق كود آمن بشكل كبير فلايمكن مثلا ان يحدث فيه Sql Injection او اي ثغرة اخرى و ايضا محدث بآخر التحديثات .

 

طبقة View

الان بعد ان تعرفنا على Model Layer سوف ننتقل الى طبقة اخرى تعتبر من البنية الاساسية في Cakephp وهي طبقة View او العرض بالعربي . وظيفة هذه الطبقة هو عرض ما تم جلبه باستخدام Model Layer في قالب معين او في تنسيق معين باستخدام HTML & CSS لكي يظهر للمستخدم على المتصفح على سبيل المثال هذه الطبقة ممكن ان تقوم بعرض تفاصيل على شكل HTML او حتى على شكل JSON او XML المهم هنا ان تفهم ان هذه الطبقة مسؤولة فقط عن كل ما يظهر للمستخدم في  المتصفح .

دعونا نآخذ مثال على هذه الطبقة انظر الى الكود التالي

في ملف View الخاص باليوزر نحن نقوم بعرض ما قمنا بالاستعلام عنه في Model Layer على شكل قائمة HTML . طبعاً هذه الطبقة تحتوي على العديد الطبقات الفرعية مثل Template , Layout , Cell , elements بمعنى اخر تم تقسيم ما يظهر على المتصفح الى اقسام , مثلاً Forms له Class خاص به و ايضا القوائم و الاشكال الاخرى وهذا يساعدك على تخصيص مشروعك بشكل كبير وضبط التصميم فيه .

 

الطبقة الاخيرة وهي Controller layer

هذه الطبقة مسؤولة عن العمليات التي يطلبها المستخدم مثلا , اذا اراد الوصول الى صفحة الملف الشخصي فإن هذه الطبقة تتعامل مع الطلب تقوم بالاتصال بطبقة Model و تجلب البيانات و تقوم بطلب الشكل المناسب من طبقة View و تقوم بعرضها , يعني هي الوسيط بين Model & View والمستخدم يتصل بهذه الصفحة غالبا ولا يمكن ان يتصل بـ Model , View مباشرتاً بدون المرور على Controller Layer . نستطيع القول ان هذه الطبقة هي المدير الذي يتأكد ان البيانات التي يطلبها المستخدم موجود في طبقة Model وايضاً يتأكد ان الشكل المناسب موجود في طبقة View ومن بعدها يلم زمام الامور ويعود للمستخدم بالنتيجة النهائية . من ضمن الاشياء التي تقوم بها هذه الطبقة ايضاً هي التحقق ما اذا كان المستخدم مخوّل بالدخول الى هذه الصفحة ام لا , وايضا تتأكد بطريقتاً ما اذا كان الطلب صالح و ما نوع الطلب والى اخره من تفاصيل برمجية .

على سبيل المثال في UserController يوجد لدينا العديد العمليات مثل صفحة لعرض الملف الشخصي , صفحة لاضافة مستخدم جديد صفحة لتغيير الرقم السري , جميع هذه الصفحات هي عبارة عن دوال بداخل Controller layer الخاص باليوزر , في مثالي هذا لنفترض ان لدي Controller لليوزر وهذا محتواه

 

لربما لاحظت ان هنا لم نذكر اي شي يتعلق بـ View Layer وهذا يعود الى الطبقة الاولى Convetion Layer والتي تقوم بالتعرف على الشكل المطلوب من الاسم , فهنا لدينا دالة اسمها Add موجودة بداخل UserController.php ما يقوم بعمله Cakephp هو بشكل تلقائي يتم الاتصال بطبقة View ويسألها هل يوجد ملف Add.html بداخل مجلد User template ؟  اذا وجد الملف يتم عرض ما بداخله وربطه مع Controller واقصد هنا الدالة Add ويتم عرضه على المتصفح , و إن لم يجده يقوم باظهار رسالة خطأ توضح الخطأ هذا .

 

كيف يعمل Cakephp ؟

حسنا أنت الان متكيف مع الطبقات المختلفة التي ذكرتها لك في الاعلى , الان دعنا نراجع كيف يعمل هذا الاطار من لحظة طلب المستخدم اي صفحة على المتصفح والى لحظة احضار البيانات و عرضها

انظر الى هذه الرسمة التوضيحية :

Flow diagram showing a typical CakePHP request

الطريقة الطبيعية لعمل Cakephp او كما يطلق عليه The Life Cycle الذي يعمل عليه هذا الاطار , هو من لحظة طلب الزائر لصفحة معينة في برنامجك المبني على Cakephp والموضح في الرسمة في الاعلى على اليسار Index.php الآن لنفترض انك قمت ببرمجة برنامج باستخدام Cakephp ويحتوي على صفحة Index , عندما يقوم الزائر بطلب هذه الصفحة فان هناك العديد من الخطوات التي يقوم بها Cakephp من اجل احضار محتوى الصفحة , والخطوات كالتالي :

  • السيرفر سوف يقوم باعادة توجيه الزائر الى الملف webroot/index.php
  • من الطبيعي ان برنامجك يعمل على http server لأنه php
  • يتم انشاء ما يُسمى بـ Middleware . وسوف نفهم ما هذا لاحقاً.
  • يقوم Cakephp بالتأكد من ان الصفحة المطلوبة موجودة باستخدام Middleware , and routing .
  • اذا وجد الصفحة يقوم بالعمليات السابقة وهي الاتصال بـ View and model .
  • اذا لم يجد الصفحة يتم الرجوع بخطأ .

 

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

 

شكرا لكم .

image sources

  • cake: كودر

عن كودر

[ كـودر ] مهندس برمجة , أحب التقنية , مُطوّر انظمة و تطبيقات , مهووس بالتقنية وكل جديد في عالم الإنترنت , أحب الكتابة عن التقنية عندما تسمح لي الفرصة .

شاهد أيضاً

ارسال الملفات باستخدام cURL في لغة PHP

في هذه التدوينة سوف نتعرف على طريقة استخدام مكتبة CURL لإرسال ملف باستخدام لغة PHP

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *

*