第2章 · 初心者向け
CakePHPとMVC
CakePHPは「役割分担の決まった型」です。全体像だけ先に掴みます。
1. CakePHPとは
CakePHP=PHPでWebアプリを速く・きれいに作るための道具一式ログイン、画面表示、データベースアクセスなど、毎回ゼロから書かなくてよい仕組みが最初から入っています。
たとえ
素のPHPが「包丁だけ」、CakePHPが「キッチン一式のキッチンカー」です。ルール(置き場所)がある代わりに、迷いにくくなります。
2. MVCとは
MVC=仕事を3つに分ける考え方- Model(モデル)… データ係。DBの読み書き
- View(ビュー)… 見た目係。HTMLを作る
- Controller(コントローラ)… 受付係。流れを決める
レストランのたとえ
お客さん=ブラウザ。受付=Controller。厨房=Model。盛り付け・提供=View。
3. Model / View / Controllerの役割
役割の見分け方
- DBを触る? → Model
- HTMLを書く? → View
- 「POSTが来たら保存して一覧へ戻す」など判断? → Controller
よくある失敗
全部をControllerに書くと、後で読めなくなります。まずは「受付は短く」を意識しましょう。
4. CakePHPのフォルダ構成
最初に覚える場所はこれだけで十分です。
src/Controller/ … 受付(Controller)
src/Model/Table/ … DB操作(Table)
src/Model/Entity/ … データ1件分
templates/ … 画面のHTML
config/routes.php … URLの対応表
バージョンについて
CakePHP 3/4/5でフォルダ名が少し違います。意味は同じなので、「Controller・Model・画面ファイルがある」と捉えればOKです。
5. URLから画面が表示されるまで
ブラウザ → URL解釈 → Controller →(必要ならModel)→ View → 画面
- 住所(URL)にアクセスする
- Routingが「どの受付の、どの係か」を決める
- Controllerのメソッド(Action)が動く
- データを View に渡し、HTMLが返る
6. Routingとは
Routing=URLと処理の対応表たとえば /todos を開いたら TodosController の index を動かす、と決めます。
// /todos → TodosController::index()
慣例
何も書かなくても /コントローラ名/アクション名 で動くことが多いです。まずはこの形を覚えましょう。
7. ControllerとAction
Controller=受付クラス / Action=その中の1つの窓口(メソッド)class TodosController extends AppController
{
public function index()
{
// 一覧ページ用の窓口
}
}
index がActionです。URLの最後の部分と名前が対応することが多いです。
8. CakePHPコードの基本的な読み方
迷ったらこの3問
- このURLはどの Action?
- データはどこで取っている?
- どの画面ファイルを出している?
Action名と、templates 内のファイル名がだいたい一致する
第2章 やってみよう
EXERCISE
- 自分のプロジェクトで Controller フォルダを開いてみる
- 既存のURLを1つ選び、「Controller名 / Action名」を書き出す
- MVCを、レストランのたとえで家族に説明してみる