2010 12月 ITかあさん

ITかあさん

CakePHP  security saltとデバッグモードの設定

CakePHPでコントローラーを作る前にやること、確認することが2点あります。
それはsecurity saltの変更とデバッグモードの確認です。

デバッグモードの変更

/app/config/core.php の52行目に
define('DEBUG', 2);と書いてあるやつです。

ざっと説明しますと、

  • 0: エラーは出力されず、デバッグメッセージ表示されない。
  • 1: Warnings とエラー、デバッグメッセージを表示。
  • 2: 実行されたSQL 文が表示。
  • 3:2の内容と、現在のオブジェクトのフルダンプも表示

一通り開発が終わったらエラーやダンプを表示させないよう、最後は
define('DEBUG', 0);
とします。

ひとまず、私はdefine('DEBUG', 2);
これでいこうと思います。CakePHP1.3をダウンロードするとデフォルトは2になっていますけどね。

security saltの変更

ハッシュの生成に用いられているようです。マニュアルにそう書いてあった。
/app/config/core.phpの153行目を編集し、デフォルトのsalt値を変更します。
デフォルトから1文字でも修正してあればいいそうです。

例えばローカルの開発環境から本番のサーバーにまるごと移動した場合、このsecurity saltの変更を求めてエラーが出力されます。
サーバーを移動したらsecurity saltも一緒に変更してあげます。

これでCakePHPの開発環境が整いました!

CAKEPHP データベースの設計

動画をもっと大きく見たい方はこちら

CakePHPの便利なところは

  • 面倒な処理(SQLはCakePHP側で勝手にやってくれる)
  • データベースの種類に依存しない

これに限ると思います。

これらの便利な機能を存分に発揮するにはCakePHPに沿ったデータベースの設計が必要です。

CakePHPのデータベース設計のコツ

  • フィールドの型は命名規則を守る

CakePHPの機能を存分に使うためにはCakePHP独自の命名規則を守らなければなりません。

今回は簡易的なブックマークアプリを作成します。

データベースの内容

  • ID
  • タイトル
  • URL
  • 登録日時
  • 更新日時

SQL

CREATE TABLE posts (
id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
title VARCHAR(50),
url VARCHAR(50),
created DATETIME DEFAULT NULL,
modified DATETIME DEFAULT NULL
);

まずテーブル名ですが、これにも大事な規則があり、仮にpostという内容のテーブルを作成したいなら、postsと、必ず複数形にします。

id名はpost_idとか余計なことはせず、ただidと書きます。で、

URLとタイトルについては特に変わらずいつものデータベース設計と一緒。

登録日時と更新日時の登録については重要な命名規則があります。

登録日時はcreated,更新日時はmodified

登録日時や更新日時をデータベースに登録するにはPHP側でdate関数を使って取得しなくてもCakePHPが勝手にやってくれます!すばらしか!

登録日時と更新日時がほしい場合は登録日時はcreated,更新日時はmodifiedというフィールド名を作成し、DATETIME型にする。これだけです。

なお、今回は多数の書き込みを予想してデータベースの種類はMysqlのinnoDBにしました。私もまだデータベースについてはまだ初心者ですが、SELECT文についてはMyisamが早く、トランザクション機能とサブクエリが投げられるのがnnoDB。それぞれの特徴をつかんで使い分けるとよさげです。

今日のまとめ

テーブル名は複数系。オートインクリメントはid、登録日時はcreated,更新日時はmodifiedとそれぞれCakePHPの命名規則に沿って名前をつけること!