最終更新:2013-12-18 (水) 00:39:09 (3775d)  

CakePHP
Top / CakePHP

CakePHP は、PHP のための、オープンソースによる rapid development フレームワークです。Web アプリケーションをプログラマが作成するための、ライブラリクラス、実行時の構造基盤などで構成されていて、Ruby on Rails フレームワークに触発されています。私たちの主要な目標は、構造化し、すばやい仕方で作業しつつも、柔軟性を失わないようにできることです。

http://cakephp.org/

http://cakephp.seesaa.net/article/87269708.html

CakePHP/バージョン

  • CakePHP 2.1? (2012/03)
  • CakePHP 2.0 (2011/10) - PHP 5.2.8?以上。
  • CakePHP 1.3? (2010/04)
  • 1.2は開発版
    • 1.2からフォームの処理にCakePHP/FormHelperを使うように変更されている。
  • 1.1は安定板
CakePHP最新情報 PHPカンファレンス関西2012 from ichikaway

特徴

  • PHP4/PHP5の両方に対応(PHPのバージョンによってコードを読み分けて対応)
  • PEARライブラリを必要としない
  • O/Rマッピング(テーブルアソシエーション)
  • CRUD(データの作成、読み込み、更新、削除)画面の自動生成
  • ビューのキャッシュ機能で表示の高速化
  • バリデーション(入力値検証)機能
  • 生成されたSQL文のデバッグ機能
  • 活発なコミュニティの存在
  • Ajax、htmlなどの各種ヘルパー
  • セキュリティ、セッション、リクエストなどのコンポーネント
  • ACLによる認証システム
  • データのサニタイズ
  • 「vendor」ディレクトリで各種のPHPクラスを取り込める

対応データベース

ライブラリ

ドキュメント

メモ

  • URL
“/controller/action/var1/var2”

は、デフォルトの動作では、

Controller::action($var1, $var2)

にマップされる

  • 存在しないactionにアクセスするとコードのテンプレを表示してくれる

規約

ファイル

  • ファイル名はアンダースコア記法

クラス

  • クラス名はキャメル記法 HogeContoroller?
    • アンダースコアが付けられたコントローラ関数は web 上では見えない
    • ApplesController?(ファイル名は'apples_controller.php')には、http://example.com/applesとしてアクセスできる

ビュー

  • ビューのテンプレートファイルは、それを表示するコントローラの関数に合わせた、アンダースコア記法で名前が付く。
  • PeopleController?クラスのgetReady()関数は、ビューテンプレートとして、/app/views/people/get_ready.ctpを探す

データベース

  • テーブル名は複数形
  • id
  • created
  • modified

ファイル構造

app/
app/config/ #CakePHP が使用する(数個の)設定ファイルが入る場所。データベース接続の詳細、ブートストラップ、コアの設定ファイルなど
app/controllers/ #アプリケーションのコントローラとコンポーネント
app/locale #国際化のための文字ファイル
app/models/ #アプリケーションのモデル、ビヘイビア、データソース
app/plugins/ #プラグインパッケージ
app/tmp/ #このフォルダは通常、モデルの内容デ ータや、ログの保管に使用。時にはセッション情報も。
app/vendors/ #外部(サードパーティ)で作成されたクラスやライブラリは、ここに置く
app/views/ #表示用のファイル
app/webroot/ #運用時(production)用のセットアップでは、このフォルダがアプリケーションのドキュメントルートになります

cake/
docs/
index.php
vendors/

CakePHP/ヘルパー

CakePHP/コンポーネント

設定ファイル

app/config/database.php
app/config/core.php

グローバル関数

  • h - htmlspecialchars
  • a - array
  • aa - キーと値を渡してハッシュ作成
  • e - echo
  • low - strtolower
  • up - strtoupper
  • r - str_replace
  • am - array_merge
  • env - 環境変数
  • pr - print_r
  • debug - デバッグ出力

主要な関数

  • beforeFilter()、すべてのコントローラのアクションロジックの実行前に呼ばれます。
  • beforeRender()、コントローラロジックの実行後、しかしビューの表示(render)前に実行されます。
  • afterFilter()、すべてのコントローラロジックを実行し、ビューの表示(render)が終わった後に実行されます。手動でrender()をコントローラから呼び、その後にロジックを実行しているのでない限り、afterRenderとafterFilterには違いがありません。

変数とか

//リクエスト
$this->params['url'];//GET
$this->params['form'];//POST

//ユーザがフォームを使ってデータをPOSTした場合、その情報は、$this->dataの中に入ってくる
$_POST['data'];//以下は同じ意味
$this->params['form']['data'];
$this->params['data'];
$this->data;

インストール

  • アーカイブを展開
  • cake/app/config/core.phpで暗号化のsaltを指定
  • cake/app/config/database.php.defaultをテンプレにして使うDB指定
  • httpd.confでmod_rewriteを有効にする

チュートリアル

内容

  • postsテーブルを作成
  • app/models/post.php を作成(class Post extends AppModel?)
    • Postというモデルを作るとPostsController?、postsテーブルと自動的に結びつく
  • app/controllers/posts_controller.php を作成 (class PostsController? extends AppController?)
  • app/views/posts/index.thtml にテンプレを書く
  • add,delete,editとかのアクションを作成する
  • app/config/routes.php で / へのアクセス時のアクションを差し替える

参考