PHP'de MVC Uygulaması
Öğrendiğimiz her şeyin birlikte nasıl uygulanacağına bir göz atalım. Örneğin, web sitemizde bazı makale-sayfalar olduğunu varsayalım. Biz ya bir makaleyi göstermek ya da tüm makaleleri göstermek istiyoruz. Bunu çerçevemizde nasıl yapacağımızı inceleyelim.
Veritabanında Tablo
Başlangıç olarak veritabanında bir pages
tablosu oluşturalım.
id, title ve text sütunlarını ekleyelim.
Bu tabloyu PhpMyAdmin aracılığıyla
bazı verilerle dolduralım.
Model
Bir kayıt getirmek için bir metodu ve tüm kayıtları getirmek için bir metodu olan bir model yapalım:
<?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");
}
}
?>
Yönlendirme (Routing)
İlgili yönlendirmeyi yapalım:
<?php
use \Core\Route;
return [
new Route('/page/:id', 'page', 'one'),
new Route('/pages/', 'page', 'all'),
];
?>
Kontrolcü (Controller)
Bir kontrolcü yapalım:
<?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 = 'Tüm Sayfaların Listesi';
$pages = (new Page) -> getAll();
return $this->render('page/all', [
'pages' => $pages,
'h1' => $this->title
]);
}
}
?>
Görünümler (Views)
one metodu için bir görünüm yapalım:
<h1><?= $h1; ?></h1>
<div id="content">
<?= $text; ?>
</div>
all metodu için bir görünüm yapalım:
<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']; ?>/">sayfaya link</td>
</tr>
<?php endforeach; ?>
</table>
</div>
Pratik Görevler
Veritabanınızda ürünler olduğunu varsayalım.
Her bir ürün bir isim, fiyat, miktar ve açıklama içerir.
Teoride yapıldığı gibi, id'ye göre tek bir ürünün
ve tüm ürünlerin listelenmesini gerçekleştirin.