Penerapan MVC di PHP
Mari kita lihat penerapan bersama semua yang telah dipelajari. Misalnya, kita memiliki beberapa artikel-halaman di situs web. Kita ingin menunjukkan satu artikel, atau menunjukkan semua artikel. Mari kita bahas cara melakukannya dalam framework kita.
Tabel di Database
Pertama, buat tabel pages
dalam basis data. Tambahkan kolom id,
title dan text. Isi
tabel ini dengan beberapa data
melalui PhpMyAdmin.
Model
Buat model dengan metode untuk mendapatkan satu catatan dan metode untuk mendapatkan semua catatan:
<?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
Buat routing yang sesuai:
<?php
use \Core\Route;
return [
new Route('/page/:id', 'page', 'one'),
new Route('/pages/', 'page', 'all'),
];
?>
Controller
Buat controller:
<?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 = 'Daftar semua halaman';
$pages = (new Page) -> getAll();
return $this->render('page/all', [
'pages' => $pages,
'h1' => $this->title
]);
}
}
?>
View
Buat view untuk metode one:
<h1><?= $h1; ?></h1>
<div id="content">
<?= $text; ?>
</div>
Buat view untuk metode all:
<h1><?= $h1; ?></h1>
<div id="content">
<table>
<tr>
<th>id</th>
<th>title</th>
<th>tautan</th>
</tr>
<?php foreach ($pages as $page): ?>
<tr>
<td><?= $page['id']; ?></td>
<td><?= $page['title']; ?></td>
<td><a href="/page/<?= $page['id']; ?>/">tautan ke halaman</td>
</tr>
<?php endforeach; ?>
</table>
</div>
Tugas Praktis
Misalkan Anda memiliki produk di basis data.
Setiap produk berisi nama, harga, dan
kuantitas, deskripsi. Implementasikan tampilan satu
produk berdasarkan id dan semua produk serupa
seperti yang dilakukan dalam teori.