cakePHPとは
genki
genki
ATOMRSS
  • ソースコードID: 320
  • 登録日時: 2007/09/18 13:10
  • 最終更新日時: 2007/09/19 10:39
  • アクセス数: 2564
  • タグ:  cakephp
  • codeなにがしブックマークに追加する 0 users
  • このページを del.icio.us に追加
  • このページをはてなブックマークに追加
  • GoodJob
  • 14

GJ

GJGJGJGJ

説明

同じ会社の人がcakePHPについてまとめた文です。

この人はRuby on Rails使いなのですが、その視点からcakePHPを見たらこう思うんだなー、というのがちょっと新鮮だったので、ここにも転載します。
=================================================
cakePHP とは?
公式の文をまとめると、

・PHP のための、オープンソースによる rapid development フレームワーク
・Ruby on Rails フレームワークに触発されている。

特徴としては、ruby on rails に触発されている、という事以外では、

・PEAR等の外部ライブラリに依存していない
・インストールが簡単。(ダウンロードしたファイルを解凍後、コピーするだけ)

以下、フレームワークとしての機能を上げます。
・MVCモデル
・Cool URI
・ActiveRecord (O/Rマッパー)
・モデルのバリデーション機能
・ビューで便利なヘルパー群
・ビューキャッシュ
・フィルタチェイン
・アクションチェイン
・ネイティブ関数の短縮表記

私は以前、ruby on rails を触っていたので、Cool URIや、ActiveRecord、
モデルのバリデーション機能はわかりやすかったです。

その視点からの意見ですが、便利なところと、不便なところをまとめてみました。

便利な機能
・MVCモデル
・Cool URI
・フィルタチェイン
  上記3つは、ruby on rails でも味わえましたので、ここでは特に述べません。

・アクションチェイン
  この機能は、別のコントローラのアクションを呼び出す機能で、結構便利です。
  アクション共通の関数はコンポーネント化するという考え方がありますが、
  アクションチェインのおかげでコントロール化してしまうのもアリです。

・入力データ専用の変数がある
  画面からの入力データはすべて this->data で参照可能です。このデータを次の
  遷移先の画面で使う時は、特にいじる必要がありません。
  そのため、入力画面→確認画面 と遷移するようなところでは、あまり
  データの処理を意識する必要がありません。
  これは、入力画面時の入力チェックエラーなどで同じ画面に戻る時も同様で、
  特に何もしなくても、入力データは保持されています。

・インストールが簡単
  コピーして配置すれば終わりなので、環境の構築は楽です。外部のライブラリに
  依存してないのがいいですね。

不便な機能
・モデルのバリデーション
  この機能に関しては、結構貧弱な印象を受けました。というのも、一つの項目に
  一つのルールしか設定できず、あとは、自前で用意する必要があるからです。

  私が使っているのは、バージョン 1.1 系なのですが、1.2系からはこの
  バリデーション機能が大幅に強化されるようです。

  1.2系はα版が出ており、モデルのバリデーションだけ抜き出して1.1系に適用
  している人もいるようですね。

・DB からのデータを取得した時の形式について
  ActiveRecord を使って sql をあまり意識せずにコーディングする事が出来ますが、
  この時取得するデータの形式がちょっとわかりづらいです。
  以下のような感じになります。
    $data array("モデル名" => array("フィールド名" => "値",
                    "フィールド名" => "値",
                    …),

  という感じでモデル名が必ず含まれています。モデルはデータを取得する時に
  指定しているため、($this->Modelname->find(...) という感じで)データへの
  アクセスにまたモデル名が必要なのか、と思ってしまいます。


簡単ですが、こんな感じでしょうか。もう少し使い込んでみたいです。

php 版の ruby on rails を作る、という感じではない(影響は多分に受けていますが)
ので、今後どういうふうに便利になっていくのか、という期待はあります。


最後に上記挙げた機能の説明は以下の通り。

・MVCモデル

・Cool URI
  ・例えば、「ユーザの情報を編集するURI」を考えた時、Usersコントローラーのeditメソッドをアクションとし、
   パラメータとしてユーザーIdを渡すとすると・・・
   http://example.com/users/edit/128

   というようURIで可能となる。

   この規則は Routes(app/config/routes.php)という機構で柔軟に定義できる。
   場合によっては、mod_rewrite も使う。

   また、外から直接呼ばれたくないアクションは _(アンダーバー)をつける。
   _foo() (アンダーバー1個)で protected
   __foo() (アンダーバー2個)で private ということらしい。

・ActiveRecord (O/Rマッパー)
  例:
  // すべてのユーザーの情報を取得
  $users $this->User->findAll();

  // ユーザーIdを指定して1つの情報を取得
  $user $this->User->findById($user_id)

・モデルのバリデーション機能
  ・多分 rails で言う、validates_* 系だと思われる。
   となると、範囲内チェックや、文字列用や数値であるかどうか等が指定可能?

・ビューで便利なヘルパー群
  <!--$job_optionsはoption要素用の連想配列で,$user['User']['job'] 
  selected にしたい値-->
  <?php echo $html->selectTag('User/job', $job_options, $user['User']['job']) ?>

  <script type="text/javascript">
  // JavaScript用に適切にエスケープする
  var username "<?php echo
$javascript->escapeString($user['User']['name']) ?>";
  </script>

  この辺( http://api.cakephp.org/class_html_helper.html (HtmlHelper))とか、
  この辺( http://www.donutczar.com/cake1point2/donuts/ )が参考になります。

・ビューキャッシュ
  ・初期状態では無効。開発時は無効にしておいたほうがよさげ。
  ・有効にする場合、app/config/core.phpのCACHE_CHECK定数をtrueにし、
   キャッシュさせたいコントローラークラス内で、キャッシュさせたい
   アクション名(必要であればパラメータ)と生存時間(秒)を定義すればよい。

・フィルタチェイン
  ・コントローラの共通処理を定義する手段として、すべてのアクション前に
   実行できる beforeFilter メソッド等がある。
   モデルで afterFind メソッドを使うとコントローラに値を戻す前に値を加工
   できる。

・アクションチェイン
  ・アクションとして定義したメソッドを外部から呼べるようにできる(通常はURI
   から呼び出されるアクションを内部から呼び出すことができる)。
   $usersDetail $this->requestAction('/users/detail/' $user_id,
array('return' => true));

・ネイティブ関数の短縮表記
 例:
 ・array(配列) => a
 ・array(連想配列) => aa // array assocの略
 ・array_merge => am
 ・htmlspecialchars => h
 ・str_replace => r
 ・print_r => pr


※ 1.2系 はバリデータの拡張のほかに、キャッシュにapcやmemcachedなどが使えるように
  なっているらしい。 (現在の stable は1.1系)


参考文献
CakePHP 本家
http://cakephp.org/

CakePHP プログラマーズ リファレンスガイド
http://www.cakephp.jp/doc/index.html

CakePHP Guide
http://www.blueocean.bz/blog/cakephp/index.php

idea*idea cakePHP修行
http://www.ideaxidea.com/archives/cakephp/

cakePHP guide
http://www.blueocean.bz/blog/cakephp/archives/category/

cakePHP入門
http://cakephp.jp/modules/newbb/viewtopic.php?topic_id=33...

ソースコード

    コメント

    前へ 1 次へ

    コメントする

    [block]から[/block]までの範囲はブロック表示されます。
    部分的に目立たせたい時や、引用などにお使いください。

    [code]から[/code]までの範囲は等幅表示されます。
    ソースコードや設定ファイルの記述などにお使いください。

    ゲスト投稿者:ゲスト:

    PDFLib | A library for processing PDF on the fly プレゼン公開・共有サイト handsOut.jp オープンタイプ株式会社 チーム・マイナス6% - みんなで止めよう温暖化

    ソースコードのブログパーツ

    デフォルトのフォントサイズ
    修飾
    表示サイズ
    px px
    プレビュー (表示する)
    下のプレビュー領域をクリックすると、ポップアップで全体を見ることができます。
    パラメータが不正です

      GoodJobしたユーザ

      • tetsuhon
      • kamipo
      • is_yamada

      ブックマークコメント

      関連するなにがし

      前へ 1 次へ