PHPのSlimでMVCを実装してみる

Published: 2016年10月2日 by tomsato

概要

PHPのSlimフレームワークを試してみるの続き
PHPのSlimフレームワークでMVCを実現させてみる

ソースコードはこちら:tomsato/slim-sample

本サンプルではSlim-Skeletonでスケルトンを作成してから以下の変更を行っている

  • DI・DIコンテナの削除 (初学者の人には敷居が高いため)
  • テンプレートエンジンとしてTwigを採用
  • MVC対応

MVCについて

FuelPHPでMVCについて調べつつ簡単に実装してみる
以前の記事でMVCについてはまとめているので全く同じことを書く

概要図
mvc02

※ 上記の図では例としてModelはデータベースからデータを引いていますがもちろんデータベース以外からもデータをひくことがあります

MVCはM(Model)・V(View)・C(Controller)の略です
Modelがデータ取得などデータを扱ってViewが表示部分を担当します
ControllerがModelとViewの架け橋となって処理を行います

メリットとしては「機能分離」と「再利用性」があります

機能分離
機能毎の分離が明確になるのでそれぞれの機能を独立して考えて開発することができる
得意分野の実装に集中ができる

再利用性
コンポーネント間の依存が最小限に抑えられているので他の部分の影響を受けにくい
コンポーネントを再利用できる

準備

基本的なインストール方法などはPHPのSlimフレームワークを試してみるに記述しているのでそっちを参考にする

$ git clone git@github.com:tomsato/slim-sample.git
$ cd slim-sample/
$ composer install

アプリケーションを動かす

$ sudo composer start
> php -S 0.0.0.0:80 -t public public/index.php

http://{ipアドレス}/hoge/testにアクセスして「Home testtttt.」と表示されることを確認する
(表示内容が適当過ぎてすみません)

テスト実行方法

$ sudo composer test
> phpunit
PHPUnit 5.5.5 by Sebastian Bergmann and contributors.

.                                                                   1 / 1 (100%)

Time: 50 ms, Memory: 6.00MB

OK (1 test, 2 assertions)

MVCの流れ

画面が表示されるまでの流れ

  1. public/index.php
    • conf/settings.phpやconf/routes.phpなどの設定ファイル類を読み込む
  2. conf/routes.php
    • ルーティングの設定をする
    • /hoge/testのアクセスの場合はsrc/Controller/SampleApp.phpのSampleAppクラスのindex関数を実行する
  3. src/Controller/SampleApp.php (SampleAppクラスのindex関数)
    • Modelからデータを取得する
      • src/Model/SampleModel.phpのSampleModelクラスのgetStr関数から文字列を取得する
    • Viewで画面描画を行う
      • PHPのテンプレートエンジンであるTwigを使っている
      • テンプレートファイルとしてsrc/View/test.twigを読んでいる

Controllerの中でModelからデータを引いてViewに渡して画面表示するという流れは抑えている

コメントを書く

※ 個別に返信が必要な時のみご記入ください

※ Emailは公開されません

※ 承認されると名前・コメントが下記に表示されます

コメント一覧

最近の投稿

ビジュアルリグレッションテストについてまとめ、ネットで調べると数多くのライブラリがありどれがどんな立ち位置なのか全体像がわかりずらかったのでどんな種類があるのか入門の入門としてまとめます、またPlaywrightを使って実際に触ってみました

社内ツールなどの超小規模なAPIをGolangで実装する際にフレームワークを使うべきかを、実際にnet/httpを使った実装とフレームワークを使った実装を比較することでどれだけ優位性があるかを見ていきたいと思います。今回はフレームワークにはシンプルで使いやすそうなEchoを使うことにします。

vue-pdfを使ってNuxt.jsで作成しているアプリケーションに pdfスライドを表示させるサンプルを作成しました README.md通りに実装してもうまくいかないところがあったのでそのあたり含めてまとめます

Vue.js / Nuxt.jsにおけるログインの実装方法をまとめる Auth0やNuxt.jsのAuth Moduleとmiddlewareについて調べつつサンプルを作成することで理解を深める

コンポーネント設計について考える Atomic DesignやPresentational Component, Container Componentについてまとめつつ 自分だったらVue.js / Nuxt.jsでどういうコンポーネント設計にするかについてまとめます

カテゴリ一覧

タグ一覧