🔹 What is MVC?
MVC = Model + View + Controller
It is a design pattern used to organize code into 3 parts:
1️⃣ Model (Data Layer)
- Handles database & business logic
- Fetches, inserts, updates data
- Example:
class UserModel {
public function getUsers() {
// fetch data from database
}
}
2️⃣ View (UI Layer)
- Responsible for frontend / UI
- Displays data to user
- Example:
<h1>Welcome <?= $name ?></h1>
3️⃣ Controller (Logic Layer)
- Connects Model + View
- Handles user request
- Example:
class UserController {
public function index() {
$model = new UserModel();
$data = $model->getUsers();
include 'views/users.php';
}
}
🔄 How MVC Works (Flow)
- User opens URL →
/users - Request goes to Controller
- Controller calls Model
- Model fetches data from DB
- Controller sends data to View
- View shows result to user
👉 Simple Flow:
User → Controller → Model → Controller → View → User
📁 Folder Structure (Basic MVC in PHP)
/project
│
├── /app
│ ├── /controllers
│ │ └── UserController.php
│ │
│ ├── /models
│ │ └── UserModel.php
│ │
│ └── /views
│ └── users.php
│
├── /core
│ └── Router.php
│
├── /config
│ └── database.php
│
├── /public
│ └── index.php (Entry point)
│
└── .htaccess
🛠️ Basic MVC Project (Simple Example)
📍 1. public/index.php (Entry Point)
require_once '../app/controllers/UserController.php';$controller = new UserController();
$controller->index();
📍 2. Controller (UserController.php)
require_once '../app/models/UserModel.php';class UserController {
public function index() {
$model = new UserModel();
$users = $model->getUsers(); require '../app/views/users.php';
}
}
📍 3. Model (UserModel.php)
class UserModel {
public function getUsers() {
return [
['name' => 'Aditya'],
['name' => 'Rahul']
];
}
}
📍 4. View (users.php)
<h2>User List</h2><ul>
<?php foreach($users as $user): ?>
<li><?= $user['name'] ?></li>
<?php endforeach; ?>
</ul>
🔥 Why Use MVC?
✔ Clean code
✔ Easy to maintain
✔ Scalable projects
✔ Team-friendly (frontend + backend separation)
⚡ Pro Tips (Real-World Use)
- Use Router for clean URLs (
/users,/products) - Add Database connection class
- Use autoloading (PSR-4) instead of manual require
- Use frameworks like:
- Laravel (Best for MVC in PHP)
- CodeIgniter (Lightweight)
🚀 Simple Summary
| Part | Work |
|---|---|
| Model | Data + Database |
| View | UI / Design |
| Controller | Logic + Flow Control |






