Истифодаи MVC дар PHP
Биёед назар кунем ба истифодаи муштараки ҳамаи омӯхтаҳо. Фарз кунем, барои намуна, дар сайти мо баъзе саҳифаҳо-мақолаҳо ҳастанд. Мо мехоҳем ё як мақоларо нишон диҳем, ё ҳамаи мақолаҳоро нишон диҳем. Биёед таҳлил кунем, ки чӣ тавр инро дар фреймворки мо иҷро кардан мумкин аст.
Ҷадвал дар ПБ
Барои оғоз ҷадвали pages
ро дар пойгоҳи додаҳо эҷод мекунем. Ба он сутунҳои id,
title ва text-ро илова мекунем. Ин
ҷадвалро бо баъзе додаҳо
тавассути PhpMyAdmin пур мекунем.
Модел
Моделеро бо усули ба даст овардани як қайд ва усули ба даст овардани ҳамаи қайдҳо созем:
<?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");
}
}
?>
Роутинг
Роутинги мувофиқро созем:
<?php
use \Core\Route;
return [
new Route('/page/:id', 'page', 'one'),
new Route('/pages/', 'page', 'all'),
];
?>
Контроллер
Контроллерро созем:
<?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 = 'Рӯйхати ҳамаи саҳифаҳо';
$pages = (new Page) -> getAll();
return $this->render('page/all', [
'pages' => $pages,
'h1' => $this->title
]);
}
}
?>
Намоишҳо
Намоишро барои усули one созем:
<h1><?= $h1; ?></h1>
<div id="content">
<?= $text; ?>
</div>
Намоишро барои усули all созем:
<h1><?= $h1; ?></h1>
<div id="content">
<table>
<tr>
<th>id</th>
<th>title</th>
<th>пайванд</th>
</tr>
<?php foreach ($pages as $page): ?>
<tr>
<td><?= $page['id']; ?></td>
<td><?= $page['title']; ?></td>
<td><a href="/page/<?= $page['id']; ?>/">пайванд ба саҳифа</td>
</tr>
<?php endforeach; ?>
</table>
</div>
Вазифаҳои амалӣ
Фарз кунем дар пойгоҳи додаҳои шумо маҳсулотҳо мавҷуданд.
Ҳар як маҳсулот ном, нарх ва
миқдор, тавсифро дар бар мегирад. Намоиши як
маҳсулотро бо id ва ҳамаи маҳсулотҳоро ба монанди
он чи ки дар назария иҷро шудааст, амалӣ кунед.