MoyaSystem

もやしです。

Cakephp 3.0のMVC構造についてのざっくりしたまとめ

はじめに

最近CakePHPでシステムの開発を行っているのですが、この3月にリリースされたばかりのバージョン3.0で始めてしまったがために、いろいろ2.0と異なる部分があって戸惑ってます。
http://book.cakephp.org/3.0/en/index.html

Model-View-Controllerの概要についてはこちらをご参照くださいませ。
http://ja.wikipedia.org/wiki/Model_View_Controller

フォルダ構成

「Posts」という名称のテーブルを作成し、

cake bake all Posts

コマンドを実行した状態を仮定します。

  • Controller
    • Component
    • PostsController.php ファイル
  • Model
    • Behavior
    • Entity
      • Post.php ファイル
    • Table
      • PostsTable.php ファイル
  • Template
    • Post
      • add.ctp ファイル
      • edit.ctp ファイル
      • index.ctp ファイル
      • view.ctp ファイル
  • View
    • Helper

2.0とは次のような点が異なっています。

Modelファイルの格納先が Model/Entity/(エンティティ名) フォルダ下になった

2.0では Modelフォルダ直下でした。

テンプレートファイル(.ctp)の格納先が Template/(エンティティ名) フォルダ下になった

2.0では View/(エンティティ名)フォルダ直下でした。3.0ではViewフォルダの直下にbakeで生成されるファイルはありません。

まとめ

MVCといいながらViewに相当する部分がTemplateというフォルダの下に含まれているのでやや違和感があります。とはいえ2.0とそこまでかわりがあるわけではありません。
問題は各クラスの役割がかなり大きく再編されているので、2.0とおなじ感覚で使えないメソッドが数多くあります。ここはマニュアルやマイグレーションガイドを見ながら格闘していくしかないと思われます。