MVC
النهارده هنجاوبكم على سؤال مشهور في الـ Interviews عن الـ MVC (Model , View , Controller) واللي معظم اللي شغالين Coding سمعوا عنه أو شغالين بيه أصلًا!
فخلينا نتكلم عنه من نظر الـ Backend واللي مش هيختلف كتير عن باقي المجالات.
--» طيب يعني إيه MVC وإيه لازمته؟! 🤔
فى البداية الـ MVC ممكن نعتبرها طريقة بتنظملك كتابة الكود بحيث تنظم الـ Structure بتاع الـ App اللي بتبنيه🏠
مثلًا: بدل ما تكتب الكود كله ورا بعضه اللي بيعملك Function معينة ممكن تقسم الكود لكذا Function بحيث كل واحدة منهم تعمل Single Job (من Solid Principle) أو تستخدم الـ OOP بحيث تنظم الدنيا شوية.. ويكون الكود بتاعك Clean.
»» خلونا نمسك كل حرف من الكلمة ونفهم بيعبّر عن إيه 🏃🏻♂️
(١) أول حرف الـ (M) وهو اختصار لـ Model :
بص إحنا دلوقت بنبني App صح !؟
طيب الـ Data بتاعت الـ App دي هتتخزن فين ؟!
أكيد فى Database مثلا.. طيب هو إيه أصلا الـ Database؟!
هقول لك ما هى إلا شوية جداول ممكن يكون بينهم Relations زي مثلاً عندنا جدول Users و UserPhones .. كل جدول منهم هنعتبره Model يقدر يخلينا نوصل للـ User والتاني لأرقامهم.
فالخلاصة :
أن الـ Model بيخليك تتعامل مع الجداول بتاعت الـ Data Base. مثلا لو جيت وقلت:
USER::create([‘name’ => ‘CIS’])
هيروح يعمل User جديد ويخزن اسمه فى جدول الـ Users .. ( دا كود php بالمناسبة "Laravel" )
(٢) تانى حرف هو الـ ( V ) وهو اختصار لـ View :
الـ View هو الحاجات اللي بتظهرلك أنت كـ User لما تفتح الموقع (ممكن نعتبره الـ Front End ) .. مثلاً أنت بتقرأ البوست ده الوقتي .. اللي أنت شايفه دا هو الـ View والـ Data اللي فيه عشان يجيبه لك استخدموا Model بتاع الـ UserPosts اللي متخزن فيه البوست (وعرضوه فى الـ SinglePostView )
(٣) تالت حرف الـ (C ) وهو اختصار لـ Controller :
ممكن نعتبر الـ Controller هو الوسيط اللي بيربط الدنيا ببعضها، تعالوا ناخد مثال وليكن مثلا لما تدخل ع لينك الجروب ده:
https://www.facebook.com/groups/438663260306486/?ref=share
لو بصيت هتلاقي لينك فيسبوك ثم كلمة Groups ثم 438663260306486
( بالمناسبة اللينك دا بنسميه Route أو End point .. أي لينك عمومًا مش دا بس)
المهم لما تدخل على اللينك هيروح على صندوق كدا (هنسميه Magic Box) بيتأكد أن:
- اللينك صح.
- وإن مسموح لك تدخل عليه.
بعدين يروح يجيب الجروب صاحب الـ ID ده بأعضائه، وبعدين ياخد الـ Data دى كلها (من الـ Model) ويحطها في View معين كدا عشان تشوف الجروب.
»» الـ Magic box دا هو الـ Controller.