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の命名規則に沿って名前をつけること!