PHP-də MVC-nin Tətbiqi
Gəlin öyrənilənlərin hamısının birgə tətbiqinə baxaq. Məsələn, tutaq ki, saytımızda bəzi məqalə-səhifələr var. Biz ya bir məqaləni göstərmək, ya da bütün məqalələri göstərmək istəyirik. Gəlin bunu frameworkumuzda necə edə biləcəyimizə baxaq.
Verilənlər Bazasında Cədvəl
Əvvəlcə verilənlər bazasında pages
cədvəlini yaradaq. Oraya id,
title və text sütunlarını əlavə edək.
Bu cədvəli PhpMyAdmin vasitəsilə bəzi
məlumatlarla dolduraq.
Model
Bir yazını almaq üçün bir metod və bütün yazıları almaq üçün bir metod olan bir model edək:
<?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");
}
}
?>
Routing
Uyğun routingi edək:
<?php
use \Core\Route;
return [
new Route('/page/:id', 'page', 'one'),
new Route('/pages/', 'page', 'all'),
];
?>
Controller
Controller edək:
<?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 = 'Butun səhifələrin siyahısı';
$pages = (new Page) -> getAll();
return $this->render('page/all', [
'pages' => $pages,
'h1' => $this->title
]);
}
}
?>
View-lar
one metodu üçün view edək:
<h1><?= $h1; ?></h1>
<div id="content">
<?= $text; ?>
</div>
all metodu üçün view edək:
<h1><?= $h1; ?></h1>
<div id="content">
<table>
<tr>
<th>id</th>
<th>title</th>
<th>link</th>
</tr>
<?php foreach ($pages as $page): ?>
<tr>
<td><?= $page['id']; ?></td>
<td><?= $page['title']; ?></td>
<td><a href="/page/<?= $page['id']; ?>/">səhifəyə link</td>
</tr>
<?php endforeach; ?>
</table>
</div>
Praktik Tapşırıqlar
Tutaq ki, verilənlər bazanızda məhsullar var.
Hər bir məhsul ad, qiymət və
miqdar, təsviri ehtiva edir. Bir məhsulun
id-yə görə və bütün məhsulların çıxarılmasını
nəzərdə keçirdiyimiz kimi həyata keçirin.