PHPで学ぶMVCアーキテクチャの基本

Webアプリケーションを効率的に開発・保守するためには、「MVCアーキテクチャ」の理解が不可欠です。MVCは多くのフレームワーク(Laravel、Symfonyなど)にも採用されている設計パターンで、PHPで自作ミニフレームワークを作ることで理解を深めることができます。
本記事では、MVCとは何かPHPによる簡易MVC構成の実装ルーティングとコントローラーの分離について学びます。


MVCとは?設計パターンと役割分担

MVCは、以下の3つの要素から成る設計パターンです:

  • Model(モデル):データ処理やビジネスロジック
  • View(ビュー):HTMLなどユーザーに見せる部分
  • Controller(コントローラー):ユーザーからの入力を受け取り、ModelとViewをつなぐ

この分離により、保守性・再利用性・チーム開発の効率が向上します。


PHPで簡易MVC構成を作ってみよう

次のようなディレクトリ構造を使って、簡単なMVCを構築します。

/ ├── index.php ... フロントコントローラー ├── controllers/ │ └── UserController.php ├── models/ │ └── User.php ├── views/ │ └── user_view.php


1. index.php(ルーティングと呼び出し)

<?php
 // シンプルなルーティング(例:?action=show)
 $action = $_GET['action'] ?? 'index';
 require_once 'controllers/UserController.php';
 $controller = new UserController();
 $controller->$action();
?>


2. controllers/UserController.php

<?php
 require_once 'models/User.php';
 class UserController {
  public function index() {
   $userModel = new User();
   $users = $userModel-&gt;getAllUsers();
   include 'views/user_view.php';
  }
  public function show() {
   echo "ユーザー詳細ページ(show)";
  }
 }
?>


3. models/User.php

<?php
 class User {
  public function getAllUsers() {
   return [ ['id' => 1, 'name' =>'佐藤'], ['id' => 2, 'name' => '田中'] ]; } }
?>


4. views/user_view.php

<h2>ユーザー一覧</h2>
<ul>
 <?php
  foreach ($users as $user):
 ?>
 <li><?= htmlspecialchars($user['name'], ENT_QUOTES, 'UTF-8') ?></li>
 <?php
  endforeach;
 ?>
</ul>


ルーティングとコントローラーの処理分離

index.phpが「フロントコントローラー」として、URLパラメータ(例:?action=index)に応じてコントローラーメソッドを呼び出します。

この設計により、URL設計と処理ロジックが分離され、拡張・保守が容易になります。

例:URLによって動作が変化

  • /index.php?action=index → ユーザー一覧表示
  • /index.php?action=show → 詳細ページ

将来的には、これを発展させて「ルーティングクラス」や「コントローラ自動読み込み」に進化させることもできます。


まとめ

今回は、PHPでMVCアーキテクチャを理解するために:

  • MVCの基本構造と各要素の役割
  • ディレクトリを分けた簡易MVC構成
  • ルーティングとコントローラー処理の分離

を実装ベースで学びました。MVCの考え方は、LaravelやCakePHPなどのフレームワーク理解にも直結します。

採用情報 長谷川 横バージョン
SHARE
PHP Code Snippets Powered By : XYZScripts.com