PHPda MVCni qo‘llash
Keling, o‘rganilgan barcha narsalarni birgalikda qo‘llashni ko‘rib chiqaylik. Faraz qilaylik, masalan, bizning saytimizda maqola-sahifalar mavjud. Biz bitta maqolani ko‘rsatmoqchimiz yoki barcha maqolalarni ko‘rsatmoqchimiz. Keling, buni bizning freymvorkimizda qanday amalga oshirishni ko‘rib chiqaylik.
Ma’lumotlar bazasidagi jadval
Boshlash uchun ma’lumotlar bazasida pages jadvalini yaratamiz.
Unga id,
title va text ustunlarini qo‘shamiz. Keling, bu
jadvalni ba’zi ma’lumotlar bilan
PhpMyAdmin orqali to‘ldiramiz.
Model
Bitta yozuvni olish va barcha yozuvlarni olish usullari bilan model yaratamiz:
<?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");
}
}
?>
Marshrutlash
Keling, mos marshrutlashni amalga oshiramiz:
<?php
use \Core\Route;
return [
new Route('/page/:id', 'page', 'one'),
new Route('/pages/', 'page', 'all'),
];
?>
Controller
Keling, controller yaratamiz:
<?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 = 'Barcha sahifalar ro‘yxati';
$pages = (new Page) -> getAll();
return $this->render('page/all', [
'pages' => $pages,
'h1' => $this->title
]);
}
}
?>
Ko‘rinishlar
one usuli uchun ko‘rinish yaratamiz:
<h1><?= $h1; ?></h1>
<div id="content">
<?= $text; ?>
</div>
all usuli uchun ko‘rinish yaratamiz:
<h1><?= $h1; ?></h1>
<div id="content">
<table>
<tr>
<th>id</th>
<th>title</th>
<th>havola</th>
</tr>
<?php foreach ($pages as $page): ?>
<tr>
<td><?= $page['id']; ?></td>
<td><?= $page['title']; ?></td>
<td><a href="/page/<?= $page['id']; ?>/">sahifaga havola</td>
</tr>
<?php endforeach; ?>
</table>
</div>
Amaliy vazifalar
Faraz qilaylik, ma’lumotlar bazangizda mahsulotlar mavjud.
Har bir mahsulot nom, narx va
miqdor, tavsifni o‘z ichiga oladi. id bo‘yicha bitta
mahsulotni va barcha mahsulotlarni chiqarishni nazariyada qilinganidek amalga oshiring.