⊗ppMVUFmAE 19 of 35 menu

PHPにおけるMVCの適用

これまで学んだ内容を総合的に適用する様子を見てみましょう。例えば、サイトにいくつかの記事ページがあるとします。一つの記事を表示したい場合もあれば、すべての記事を表示したい場合もあります。私たちのフレームワークでこれをどのように行うかを見ていきましょう。

データベースのテーブル

まず初めに、データベースに pages テーブルを作成しましょう。そこに idtitletext のカラムを追加します。PhpMyAdminを使用して、このテーブルにいくつかのデータを入力します。

モデル

1つのレコードを取得するメソッドと、すべてのレコードを取得するメソッドを持つモデルを作成します:

<?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>タイトル</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 による1つの商品の表示とすべての商品の表示を実装してください。

日本語
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItalianoქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
当サイトでは、サイトの動作、分析、パーソナライゼーションのためにクッキーを使用しています。 データ処理はプライバシーポリシーに従って行われます。
すべて受け入れる 設定 拒否