Utumizi wa MVC katika PHP
Wacha tuangalie utumizi wa pamoja wa yote yaliyojifunza. Hebu tuseme, kwa mfano, kwenye tovuti yetu kuna makala-kurasa fulani. Sisi tunataka ama kuonyesha makala moja, au kuonyesha makala zote. Wacha tuchambue jinsi ya kufanya hivyo katika mfumo wetu wa kazi.
Jedwali kwenye Hifadhidata
Kuanza, tuunde jedwali pages
kwenye hifadhidata. Tuongeze safu id,
title na text. Tuijaze hii
jedwali na data fulani
kupitia PhpMyAdmin.
Modeli
Tutengeneze modeli na mbinu ya kupata kipande kimoja cha data na mbinu ya kupata vipande vyote vya data:
<?php
namespace Project\Models;
use \Core\Model;
class Page extends Model
{
public function getById($id)
{
return $this->findOne("SELECT * FROM pages WHERE id=$id");
}
public function getAll()
{
return $this->findMany("SELECT id, title FROM pages");
}
}
?>
Uroutingi
Tutengeneze uroutingi unaofaa:
<?php
use \Core\Route;
return [
new Route('/page/:id', 'page', 'one'),
new Route('/pages/', 'page', 'all'),
];
?>
Kidhibiti
Tutengeneze kidhibiti:
<?php
namespace Project\Controllers;
use \Core\Controller;
use \Project\Models\Page;
class PageController extends Controller
{
public function one($params)
{
$page = (new Page) -> getById($params['id']);
$this->title = $page['title'];
return $this->render('page/one', [
'text' => $page['text'],
'h1' => $this->title
]);
}
public function all()
{
$this->title = 'Orodha ya kurasa zote';
$pages = (new Page) -> getAll();
return $this->render('page/all', [
'pages' => $pages,
'h1' => $this->title
]);
}
}
?>
Mionekano
Tutengeneze muonekano wa mbinu one:
<h1><?= $h1; ?></h1>
<div id="content">
<?= $text; ?>
</div>
Tutengeneze muonekano wa mbinu all:
<h1><?= $h1; ?></h1>
<div id="content">
<table>
<tr>
<th>id</th>
<th>kichwa</th>
<th>kiungo</th>
</tr>
<?php foreach ($pages as $page): ?>
<tr>
<td><?= $page['id']; ?></td>
<td><?= $page['title']; ?></td>
<td><a href="/page/<?= $page['id']; ?>/">kiungo kwenye ukurasa</td>
</tr>
<?php endforeach; ?>
</table>
</div>
Kazi za Vitendo
Wacha tuseme kwenye hifadhidata yako kuna bidhaa.
Kila bidhaa ina jina, bei na
kiasi, maelezo. Tekeleza kuonyesha bidhaa moja
kupitia id na bidhaa zote kama
ilivyofanyika katika nadharia.