LoginSignup
4
6

More than 3 years have passed since last update.

MVCモデル(CakePHP)の基礎知識整理

Last updated at Posted at 2020-01-24

なんぞやについて
CakePHPベースで調べたもの

MVCモデルについて

プログラムの中身(処理)を機能ごとに分けて記述することで、プログラムを整理しやすくする考え方

  • モデル(Model):表示や入力に関連しない処理を担当
  • ビュー(View):表示や入力に関する処理を担当
  • コントローラ(Controller):ビューとモデルの橋渡し役を担当

image.png
1. ブラウザからコントローラーとアクションを指名され、アクションが実行される。
2. アクション内でモデルが指定されていればモデルが実行される。
3. アクションの処理が終了したら、Templateフォルダ¥コントローラーと同名のフォルダ¥アクション名と同名のctpファイルを表示対象として生成する。
4. ブラウザに返す。
(https://qiita.com/tsuyuri104/items/72797ba4c8b3fe79149a)

それぞれの役割について

Model

ビジネスロジック1を担当する
ControllerからDB関連の仕事をもらって処理する人
image.png
(https://umaroidblog.com/what_mvcmodel)

■ フォルダ構成

Model
|-Entity(Table内のソースを動かす)
|-Table(CRUD処理や入力チェックを実装する)
|-Validation(カスタマイズしたかったらここにいれる。自分で作る)

View

実際に入力や設定を行う画面を表示する
コントローラーから渡されたDBのデータをHTMLで表示したり

拡張子が「.ctp」だけど、中身はHTML with PHP
→ 普通にHTMLファイルとして編集すればOK

■ フォルダ構成
フォルダ名注意(別用途でViewフォルダがある)

Template
|-Element(HTMLファイルをパーツごとに書き出すことができる)
|-Error(エラーの時に表示する画面)
|-Layout(全画面共通で表示したいことを設定するdefault.ctp)
(他省略)

Controller

Viewからリクエストを受け取り、Modelへのメッセージに変換
そして、レスポンスとして処理後の画面をViewに返す
普通にPHPを書くところ

命名規則

ファイル名やソース内での扱いも含め

Modelの名前

【Table】
(例)UsersTable.php

DB名+Table.php2
・先頭とTableの"T"は大文字
・ファイル内のクラス名はファイル名同様にDB名+Tableだが、ControllerでTableを呼ぶときはDB名のみ
 → TableRegistry::get('Users');
・Table内のメソッドはキャメル式🐪

【Entity】
(例)User.php

DB名.php(単数形)
大文字スタート

【Validation】
規定は特になし

Viewの名前

(例)index.ctp

小文字スタート
・Template配下の命名規則は同じ
・対象のController.phpのアクション名3と同じものを指す ↓

UserController.php
class UserController extends Controller
{
    public function index() {
        ・・・・・・
    }

    private function showList() {
        ・・・・・・
    }
}

この場合、src/Template/User/4配下に
index.ctp
show_list.ctp(ここではスネーク式🐍になる)
が必要となる

privateのアクションだった場合はファイルなし
 → ブラウザからリクエストされたときのアクションのみ必要なため
 (そもそもprivateだったらクラス外からアクセスできない)

Controllerの名前

(例)UserController.php

コントローラ名+Controller.php
・先頭とControllerの"C"は大文字
・アクション名はキャメル式🐫

参考

  1. MVCモデルとは | 「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典
  2. 初めてCakePHPで開発するときに気をつけたいMVC〜 | Qiita
  3. MVCモデルについてわかりやすく解説します!【初心者向け】 | ウマロのゲームブログ

  1. 処理した結果をデータベースへ反映させること 

  2. DB名自体、基本は複数形だが単数形でも動作する 

  3. ~Controller.php内のメソッドのこと(多分) 

  4. Template/Userフォルダ:Controllerごとにフォルダが必要 

4
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
6