← الرئيسية

🏛️ مفهوم MVC

الدرس العاشر — Model, View, Controller وتنظيم التطبيقات

📖 ما هو MVC؟

MVC طريقة لتنظيم الكود في 3 أجزاء:

🍽️ مثال المطعم:
🧊
Model = الثلاجة
البيانات والمكونات
👨‍🍳
Controller = الطباخ
يطلب من الثلاجة ويجهز الطبق
🍽️
View = الطبق
العرض النهائي للعميل

🧪 محاكاة تدفق MVC

اضغط "بدء المحاكاة" لتشوف كيف يتدفق الطلب بين الطبقات:

1️⃣ المستخدم يطلب صفحة /users
2️⃣ Controller يستلم الطلب
3️⃣ Controller يطلب البيانات من Model
4️⃣ Model يجيب البيانات من قاعدة البيانات
5️⃣ Controller يرسل البيانات للـ View
6️⃣ View يعرض HTML للمستخدم
🗄️
Model
جلب البيانات
🎮
Controller
الوسيط والمنطق
🖥️
View
العرض (HTML)
اضغط "بدء المحاكاة" لمشاهدة تدفق MVC

💻 كود MVC

// ===== MODEL ===== // يتعامل مع البيانات فقط class UserModel { public function getAll() { // هنا نروح لقاعدة البيانات return [ ["id" => 1, "name" => "أحمد"], ["id" => 2, "name" => "سارة"], ]; } } // ===== VIEW ===== // عرض البيانات فقط (HTML) function usersView($users) { echo "<h1>المستخدمون</h1>"; echo "<ul>"; foreach ($users as $user) { echo "<li>{$user['name']}</li>"; } echo "</ul>"; } // ===== CONTROLLER ===== // يربط Model بـ View class UserController { private $model; public function __construct() { $this->model = new UserModel(); } public function index() { $users = $this->model->getAll(); usersView($users); } } // تشغيل $controller = new UserController(); $controller->index();

🧪 جرّب بنفسك

النتيجة ستظهر هنا...

⚠️ أخطاء شائعة

الخطأالسببالحل
SQL في الـ Viewخلط البيانات بالعرضحط الاستعلام في Model
HTML في الـ Controllerخلط المنطق بالعرضHTML يروح للـ View
Model كبير جداًكل شي فيهوزع على Models متعددة