Monthly Archives: 8月 2010

CakePHPを使ったアプリ構築手順

このエントリーをはてなブックマークに追加
はてなブックマーク - CakePHPを使ったアプリ構築手順
Share on Facebook

いろいろPHPフレームワークを触っていると、どういう手順でアプリを構築するか忘れてしまいます。メモしておきます。

1. アプリのスケルトンをbakeする

cd /path/to/cakephp_dir
cake/console/cake bake

.
Welcome to CakePHP v1.3.2 Console
---------------------------------------------------------------
App : ecstats
Path: /path/to/cakephp_dir
---------------------------------------------------------------
What is the full path for this app including the app directory name?
 Example:/path/to/cakephp_dir/myapp
[/path/to/cakephp_dir] > y
...

2. 必要なDBを作成しておく

  • テーブル名は複数形
  • どんなテーブルにも必要なカラム
    • id
    • created
    • modified

3. 設定を行う

  • database.php
  • .htaccess
    • app/.htaccess
    • app/webroot/.htaccess

4. モデル・ビュー・コントローラーをbakeする

Bakeする順番は Model→Controller→View。(Controllerより先にViewを作ろうとしても「そんな名前のControllerは無い」と言われてエラーになる)

cd /path/to/cakedir
cake/console/cake bake -app myapp


Welcome to CakePHP v1.3.2 Console
---------------------------------------------------------------
App : myapp
Path: /path/to/cakephp_dir/myapp
---------------------------------------------------------------
Interactive Bake Shell
---------------------------------------------------------------
[D]atabase Configuration
[M]odel
[V]iew
[C]ontroller
[P]roject
[F]ixture
[T]est case
[Q]uit
What would you like to Bake? (D/M/V/C/P/F/T/Q)

# M->C->Vの順にbakeしていく
# ...

5. アクセスしてみて、うまく表示されれば成功

設定が正しければ、下のような文字がブラウザに表示されます。

Sweet, "SalesReport" got Baked by CakePHP!

Your tmp directory is writable.

The FileEngine is being used for caching. To change the config edit APP/config/core.php

Your database configuration file is present.

Cake is able to connect to the database.

参考

ビュー作成時、同名のビューが存在してもエラーを出さないようにする

このエントリーをはてなブックマークに追加
はてなブックマーク - ビュー作成時、同名のビューが存在してもエラーを出さないようにする
Share on Facebook

「ビュー作成時、同名のビューがすでに存在するときは無視したい」というケースがありました。

直感的には「CREATE VIEW IF NOT EXISTS {ビュー名} AS {SELECT文}」と書けそうですが、このSQLは解釈されず、エラーが出ます。正しくは下記の用に「CREATE OR REPLACE VIEW」を使えば良いようです。

CREATE OR REPLACE VIEW view_uso AS
    SELECT
        id
       ,name
    FROM
        hige
    WHERE
        type = 'uso'
;

参考

Zend Framework命名規約早見表

このエントリーをはてなブックマークに追加
はてなブックマーク - Zend Framework命名規約早見表
Share on Facebook

Zend Frameworkは比較的厳格で、整った命名規約を定めています。以下にまとめておきます。

クラス・抽象クラス・インターフェース

共通の規約

  • “Zend/”ディレクトリ(または “ZendX/” ディレクトリ)からの階層構造通りにクラス名を付ける
    • ファイル名が “Zend/Db/Table.php” の場合、クラス名は “Zend_Db_Table”
  • アンダースコアでパス区切り
  • 複数の単語で構成されるクラス名は、それぞれの単語の先頭だけ大文字にする
    • “Zend_Pdf” → OK
    • “Zend_PDF” → NG
  • クラス名に数字を付けるのはおすすめしない

抽象クラス

共通ルール+接尾辞 “Abstract” を付ける(※アンダースコアは不要)

  • “Zend_Controller_PluginAbstract” → OK
  • “Zend_Controller_Plugin_Abstract” → NG

インターフェース

共通ルール+接尾辞 “Interface” を付ける(※アンダースコアは不要)

  • “Zend_Controller_Plugin_PluginInterface” → OK
  • “Zend_Controller_Plugin_Plugin_Interface” → NG

ファイル名

以下の文字のみが使用可能。

  • 英数字
  • アンダースコア
  • ダッシュ文字 (“-”)

※空白文字はNG

関数およびメソッド

  • 英数字のみ
    • privateメソッドとprotectedメソッド以外ではアンダースコアは禁止
    • 数字の利用はおすすめしない
  • privateメソッドとprotectedメソッドの先頭にはアンダースコア1個を入れる
  • camelCaps
    • 先頭の単語はすべて小文字
    • 以降の単語は各先頭文字だけ大文字
    • 例: filterInput(), getElementById(), widgetFactory()
  • デザインパターンを使う場合、メソッド名にパターン名を含める
  • グローバル関数は使わず、静的クラスに含める

変数

  • 英数字のみ
    • private変数とprotected変数以外ではアンダースコアは禁止
    • 数字の利用はおすすめしない
  • private変数とprotected変数の先頭にはアンダースコア1個を入れる
  • camelCaps

定数

  • 英数字およびアンダースコア
    • 数字を使用してもかまわない
  • 常にすべて大文字
  • 定数名の単語の間はアンダースコアで区切る
    • EMBED_SUPPRESS_EMBED_EXCEPTION → OK
    • EMBED_SUPPRESSEMBEDEXCEPTION → NG
  • 定数を宣言する際には、クラスのメンバとして “const” で定義する
    • “define” によるグローバル定数の宣言も可能だが非推奨

参考