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は公開されません

※ コメントは承認されると下記に表示されます

コメント一覧

最近の投稿

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でどういうコンポーネント設計にするかについてまとめます

Netlify Formsを使ってブログサイトにコメント機能を追加する方法を調べたので紹介 Netlify FormsはNetlifyに標準機能として用意されているフォーム機能 サーバレスなので別途コメント用にサーバを用意する必要がなくHTMLを埋め込むだけで準備できる

TypeScriptの入門の入門チートシート 型の種類や使い方についてまとめていくだけでなく、 TypeScriptについてや必要性などについてもまとめることでこのページでTypeScriptをざっくり理解できる程度の内容を目指す

カテゴリ一覧

タグ一覧