PHP-де MVC қолдану
Бәрін бірлесіп қолдануды қарастырайық. Мысалы, біздің сайтымызда қандай да бір мақалалар-беттер бар делік. Біз бір мақаланы көрсеткіміз келеді немесе барлық мақалаларды көрсеткіміз келеді. Мұны біздің фреймворкте қалай жасауға болатынын қарастырайық.
Дерекқордағы кесте
Алдымен дерекқорда 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 бойынша және барлық өнімдерді теорияда
жасалғанға ұқсас шығарыңыз.