CakePHPにチャレンジしはじめました。
そういう仕事がありそうな予感がするし、知っておくとあとあと有利な気がするので。
CakePHPはPHP用のフレームワークです。
フレームワークらしいフレームワークって、今まで触ったことなかったので、自分にとっては新しい領域です。
XOOPS Cubeのモジュール開発手法も、あれはあれでフレームワークって言うのかも知れないけど… あまりフレームワークの概念が良く分かってないもんで、厳密にはどういうものがフレームワークってものにカテゴライズされるのか良く知りません。
CakePHPはRuby on Railsの影響を強く受けているようです。去年行った関西オープンソースでRuby会議の人のセミナーを聞いて以来、Railsもいずれはちゃんと学習したいなーとは思っていますが…
ざっとマニュアルやら斜め読みした感じのCakePHPの特徴
フレームワークを使いこなすと、一般的なWebアプリケーションなら超速で作れるようになります。
いわゆる「お約束」的なコーディングをフレームワークが肩代わりしてくれるので、プログラマが書くコード量が少なくて済みます。
その代わり、どこからどこまでフレームワークが「お約束」を処理してくれるのかを正しく理解していないと使いこなせません。
小~中規模のサイトを量産するのにフレームワークという開発手法は適しているんだと思います。
CakePHPには、model、View、Controllerという概念があります。(略してMVC)
Webアプリケーションを「入力」、[処理」、「出力」という3つの部分に分けるとすると、
Controller=入力、Model=処理、View=出力 と考えれば良いみたい。
- Model
データベースとのI/Fとなる部分。validation(検証)もここに書く。 - View
ページのテンプレートとなる部分。HTMLを記述する。拡張子はthtml - Controller
入力されたデータや命令を最初に処理するところ。indexやadd,deleteなどのアクションを書くところ。
規約というものがあり、これに沿った形でコーディングする必要があります。
一部を紹介します。
- データベースのテーブル名をつけるときは英語の複数形にする必要があります。”users”、 “authors” 、 “articles” など。
- プライマリキーのカラム名は”id”という名前にすること。
- テーブルに、’created’(作成) や ‘modified’(修正)という列があると、フィールドにデータを自動的に時刻を書き込んでくれる。
Model、View、Controllerに対してそれぞれファイルを用意する必要がありますが、一連の動作フローのセットは同じ名前を共通で使う必要があります。 たとえば、ブログの投稿をするアプリケーションを作る場合、例えばその名前をpostとすると、
- Controller のファイル → controllers/posts_controller.php
- Model のファイル → models/post.php
- View のファイル → views/posts/index.ctp
という具合で、規約にそってファイル名をつけると、CakePHPはこれらのファイル群が同じセットであることを自動で認識してくれます。
CakePHPのディレクトリ構成はこんな感じです。ディレクトリ毎のそれぞれの役割は知っておく必要がありそうです。
どうやって学ぶか
僕はまだまだ入口に立ったばかりでほんとに基本的なことしか分からないですけど、学習にはここが参考になりました。
CakePHPブログチュートリアル :: 開発例 :: マニュアル :: 1.2 Collection :: The Cookbook
http://book.cakephp.org/ja/view/219/Blog
これはCakaPHPのマニュアルの一部で、簡単なブログシステムをCakePHPで作ってみよう!というケーススタディみたいな章なんですが、
これが一番分かりやすいです。やっぱり手を動かして学ぶのが早いですね。
このケーススタディに沿って実際にWebアプリケーションを作ってみると、なんとなくお作法が分かると思います。
ネットで探したら初心者向けのマニュアルとか、いろいろありましたけど、概念から入るより、作って見て動かしたほうが理解しやすいのではないかと思います。専門的な用語もいっぱいあって、いきなりそんなのを覚える苦労から入るのはつまらないしね。
他に参考になったのは以下です。
Akiyanさんの記事が参考になりました。全部は読んでませんけど。
CakePHPで高速Webアプリ開発:第1回 CakePHPを使いたくなる5つの特徴|gihyo.jp … 技術評論社
http://gihyo.jp/dev/serial/01/cakephp/0001
CakePHP 1.2のマニュアル :: 1.2 Collection :: The Cookbook
http://book.cakephp.org/ja
CakePHP本家サイト。CakePHPはここからダウンロードしてください。
CakePHP: 高速開発 php フレームワーク。 Home
http://cakephp.jp/