CakePHPってなんか便利らしいぞ…という無知のところからはじまり手探りで使いはじめて2年弱。
未だに「なんとなくこうやったらこうなるようだ」というレベルですが、備忘も兼ねて使い方のポイントをまとめてみたいと思います。
インストールについては【MAMP】cakePHPのインストール方法をご覧ください。
前提
この記事はCakePHP2系の内容です。
CakePHPとは
PHPベースのWEBアプリケーションフレームワーク。MITライセンスのオープンソースのため、フリーで利用できます。
MVCモデルになっていて、小規模アプリケーションの高速開発に向いているため、初心者にも扱いやすい…という風によく紹介されています。
公式サイトでも「設定より規約」という表現をしていますが、CakePHPは作り方のルールをたくさん決めているのでそれに従うことで「簡単」・「高速」を実現しているのかなぁという印象です。
設置が簡単だし、規約に従った作り方をすればデータベース周りのこともかなり自動でやってくれるので、CakePHPの扱い方さえ覚えればPHPやDBの知識がなくても簡単なアプリケーションが作れてしまいます。
使っていてほんとに思いましたが、初心者が少々CakePHPの使い方を覚えてもPHPやMYSQLなどの知識はあまり深まりません。良いフレームワークの証拠ではありますが、純粋に言語の勉強をしたい場合はおすすめしません。深まっていくのはCakePHPの知識だけです(・v・;)
利用できるデータベース
以下のDBは、マッピング機能に対応するので簡単に扱えます。
- MySQL
- PostgreSQL
- SQLite
- Microsoft SQL Server
CakePHPのアプリケーション構造
CakePHPの基本構造はMVCモデルを採用していて、以下の三つの要素が組み合わさってひとつの機能がつくられます。
要素 | 概要 | 対応フォルダ |
---|---|---|
Model モデル |
データを扱う部分。 | cake/app/Model |
View ビュー |
見た目(ユーザーインターフェース)を扱う部分。 | cake/app/View |
Controller コントローラー |
ModelとViewを制御する部分。 | cake/app/Controller |
例えば、アプリケーションに会員(User)に関する機能とページを作る場合は対応フォルダに以下のようなファイルを追加します。
要素 | 追加ソース |
---|---|
Model | User.php |
View | Users/login.ctp Users/add.ctp |
Controller | UsersController.php |
データベース | 「users」テーブル作成 |
感のいい方はすでにお気づきかもしれませんが、「ファイル名」や「テーブル名」にはCakePHPならではのルールが垣間見えています。「User」だったり「Users」だったり「users」だったりするのは筆者のキマグレではなくて、そうしなければいけないからなのです。
CakePHPの基本の規約
冒頭でも少し触れましたがCakePHPでは「規約」がとても大切です。
その規約を調べるのが難しかったりもしますが、そういうものが根幹にあると心にとどめておくと調べるのが楽になったりすることもありますよね。
これは説明というよりきちんと公式ドキュメントを読む方がいいと思いますのでリンクをはっておきます。
細かいことは色々ありますが、基本的なポイントだけまとめておきます。
要素 | 追加ソース |
---|---|
Controller | クラス名:複数形キャメル記法 + 「Controller」 ファイル名は「クラス名.php」 |
Model | クラス名:単数形でキャメル記法 |
データベース | テーブル名:複数形アンダースコア記法(小文字) |
フィールド名:アンダースコア記法(小文字) | |
主キー:各テーブルは「id」フィールド必須。 特にこだわりがなければ「INT(10) NOT NULL AUTO_INCREMENT」で作る。 |
|
hasMany, blongsTo, hasOne外部キー:モデル名(小文字) + 「_id」 | |
hasAndBelongsToMany外部キー:joinテーブル1名 +「_」+ joinテーブル2名(アルファベット順) | |
View | ディレクトリ名:Controller名(「Controller」なし) ファイル名:関数名.ctp(アンダースコア記法) |
今回はとりあえずここまで…
初めてコメントさせていただきます。
現在私はXAMPP環境にてCakephp2.4.10を勉強中です。
これからの勉強の参考にさせてもらいます。更新頑張ってください!
ご訪問とコメント、どうもありがとうございます。
CakePHPの勉強、すばらしいですね。
私も同じく勉強中なので未熟な内容にはなりますが、少しでもお役に立てば幸いです!
お互いがんばりましょう(^-^)