Kabla PHP yako kutoa response, inahitaji kupokea, kuchambua, na kushughulikia request kutoka kwa mtumiaji.
Katika MVC architecture, kila request hupitia hatua fulani zinazoelezewa kama Request Lifecycle.

Kuelewa request lifecycle hukusaidia:

Kuelewa vizuri flow ya system yako

Kuboreshwa performance na debugging

Kutengeneza code safi, modular, na scalable

⚙️ 2. Msingi wa MVC Request Lifecycle

Kawaida hatua kuu ni hizi 6:

Browser → index.php → Router → Controller → Model → View → Response


Kila sehemu ina jukumu maalum:

Step Component Description
1 Browser Mtumiaji anatuma HTTP request (mfano /students/1)
2 index.php Front controller — inachukua request yote
3 Router Inaamua controller gani inapaswa kuitwa
4 Controller Inachakata request, kuwasiliana na Model
5 Model Inashughulika na database/data logic
6 View Inarudisha HTML/JSON kwa mtumiaji
🧩 3. Mfano wa Request Lifecycle
🗂️ Muundo wa Project
mvc_project/

├── app/
│ ├── controllers/
│ │ └── StudentController.php
│ ├── models/
│ │ └── Student.php
│ └── views/
│ └── student_view.php
├── core/
│ ├── Router.php
│ └── Controller.php
└── public/
└── index.php

🧠 Hatua kwa Hatua
1️⃣ Browser Request (User Input)

Mtumiaji anaingia URL kama:

https://localhost/mvc_project/students/1


Browser inatuma HTTP GET request kwenda index.php.

2️⃣ index.php (Front Controller)
<?php
require_once '../core/Router.php';
require_once '../app/controllers/StudentController.php';

$router = new Router();
$router->add('GET', '/students/(\d+)', ['StudentController', 'show']);

$method = $_SERVER['REQUEST_METHOD'];
$uri = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH);
$router->dispatch($method, $uri);


📌 index.php ndiyo “entry point” ya kila request.

3️⃣ Router (Route Matching)
<?php
class Router {
private $routes = [];

public function add($method, $uri, $action){
$this->routes[] = ['method'=>$method, 'uri'=>$uri, 'action'=>$action];
}

public function dispatch($method, $uri){
foreach($this->routes as $route){
if($method == $route['method'] && preg_match("#^".$route['uri']."$#", $uri, $matches)){
array_shift($matches);
[$controller, $function] = $route['action'];
$controllerInstance = new $controller();
call_user_func_array([$controllerInstance, $function], $matches);
return;
}
}
echo "404 Not Found";
}
}


📌 Router inalinganisha URL na route husika, kisha inaamua controller gani iitwe.

4️⃣ Controller (Business Logic)
<?php
require_once '../app/models/Student.php';

class StudentController {
public function show($id){
$student = new Student();
$data = $student->getById($id);
require '../app/views/student_view.php';
}
}


📌 Controller hupokea data kutoka kwa Model na kuipitisha kwa View.

5️⃣ Model (Data Handling)
<?php
class Student {
private $students = [
1 => ['name' => 'John Doe', 'class' => 'Form 3'],
2 => ['name' => 'Jane Smith', 'class' => 'Form 4']
];

public function getById($id){
return $this->students[$id] ?? null;
}
}


📌 Model inasimamia data — inaweza kutoka database au array.

6️⃣ View (Output Response)
<!-- student_view.php -->
<!DOCTYPE html>
<html>
<head><title>Student Details</title></head>
<body>
<h2>Student Information</h2>
<?php if($data): ?>
<p><strong>Name:</strong> <?= htmlspecialchars($data['name']); ?></p>
<p><strong>Class:</strong> <?= htmlspecialchars($data['class']); ?></p>
<?php else: ?>
<p>Student not found!</p>
<?php endif; ?>
</body>
</html>


📌 View inaunda HTML na kurudisha response kwa browser.

🔁 7. Flow Summary Diagram
[Browser]

[index.php]

[Router]

[Controller]

[Model]

[View]

[Response → Browser]

🔑 8. Best Practices

Tumia MVC pattern kikamilifu — usichanganye logic na views

Sanitize user input kabla ya kutumia Models

Tumia autoloading (PSR-4) kupunguza require nyingi

Tumia Router inayoweza kushughulika na multiple HTTP methods

Weka error handling safi (404, 500 responses)

✅ 9. Hitimisho

Kuelewa Request Lifecycle ni msingi wa kujenga PHP MVC frameworks kama Laravel, CodeIgniter, au framework zako binafsi.
Inarahisisha debugging, optimization, na modular coding.

🔗 Tembelea:

👉 https://www.faulink.com/

Kwa mafunzo zaidi kuhusu PHP MVC, routing, na best practices za web development.