初めてのCakePHP

Railsはいいと思うのですが、使い慣れたPHPでやるならこれかなぁ、ということでちょっとお勉強。
cakePHPは全く触ったことなし。EthnaでちょっとしたAPLを作ったのとRailsで遊んだくらい。

教科書はamazon:CakePHPによる実践Webアプリケーション開発

とりあえず読んだだけですが。。

projectの作成

ディレクトリを作ったり、テンプレを配置したり。
この辺はEthnaも同じだな。

DB接続の準備

projectを作ったあとに、bakeを実行するとDB設定をするようです。
「bake」というのは、コントローラやモデルを作ったりするコマンドみたい。
EthnaでいうとethnaRailsだとrailsか?cakeを焼くからbakeなのか。。

Mysqlをいつも使っているので、デフォルトでOK。
DBは先に作って置く必要があるみたい。

DBへテーブルを登録

schemaを使ってテーブルを作るのが吉のようだ。

  1. schemaファイルを作る
  2. schemaファイルを編集し、カラムを定義
  3. schemaを実行(こういう表現でいいのか?)
モデルの作成

1テーブル1モデルだそうな。

コントローラの作成

アプリケーション(=projectとほぼ同義?)に対し、コントローラを作る。
作るときに使うモデルを指定するようです。
だから先にモデルを作るのかな。

ここまででscaffoldができる

view は作らなくても、足場が勝手に作ってくれるということか。

scaffoldだけじゃちょっとね。。

scaffoldだけだと、実際に使うアプリケーションにはちょっと、、なのでカスタマイズを。

コントローラへアクション追加

scaffoldのINDEXをオーバーライドして、

  1. 入力値から、検索条件を求める
  2. 検索条件つきのモデル内関数を呼ぶ
  3. viewにセットする

というアクションをつくる

コンポーネントを使うので、インポートしておく。

コンポーネントを作る

入力値から検索条件を求める処理をcomponentに登録して、汎用化
componentのファイルは自分で作るみたい。
ここも参考にしてみた。http://gihyo.jp/dev/serial/01/cakephp/0012

モデルに関数を追加

前述の「検索条件付きのモデル内関数」をここで作る。
SQLにセットする値を渡しているようだ

ビューの作成

今まではviewは使わずに、scaffoldまかせだったけど出力したいカタチで表示するにはビューは必要でしょう。
EthnaではSmartyを使っていたけど、cakePHPはフツーのPHP&HTMLみたいだ。

__()をつけておくと、多言語対応してくれるようです。

ビューヘルパーの作成

HTMLのタグと、表示値を、PHPのロジックでゴリゴリ書くのかな?

これもコンポーネントと同じく、コントローラにインポートが必要のようです。

今日のまとめ

  • DB設計がちゃんとできてないとダメなんだろうな・・・
  • 画面についても、ちゃんと部品化できていないとだめだな。
  • ネーミングルールを決めないとダメですな