タグ

ブックマーク / hiromi2424.hatenadiary.org (7)

  • App::import() は凄い - 24時間CakePHP

    CakePHP Advent Calendar2010、残りちょうど10日となりました。 15日目担当のひろみです。よろしくお願いします。 いんとろだくしょん どんなCakeアプリケーションでも使うといっても過言では無いのがApp::import()です。 直接使うことはなくても、ヘルパーやコンポーネントをコントローラで指定すると、間接的にApp::import()を使っていることになります。(もっと言えば、dispatcherを呼ぶだけでApp::import()は呼ばれますが・・・) そんな名脇役、App::import()について、既知の事実も含めて、詳しい挙動を追いかけてみましょう。 App::import()の歴史 CakePHP1.1までは今となっては懐かしい、uses()やvendor()を使っていました。 ヘルパやコンポーネント、モデルの読み込みすらも、グローバル関数を使っ

    App::import() は凄い - 24時間CakePHP
  • CakePHPアプリケーションの基本的な設計指針 (3) - カスタムfindタイプ - - 24時間CakePHP

    イントロダクション 標準のfindの種類(first, all, count, threaded, neighbor, list)だけでは、ビジネスロジックに対応できないことがあります。 これに対するひとつのプラクティスとしては、カスタムfindタイプを定義することです。 この記事では、実際の開発を想定したリファクタリングの過程を通してカスタムfindタイプの定義の仕方と活用方法、その意義をご紹介します。 「次」の記事 例えば、カレントのレコードの「次*1」のレコードを取得したい場合、それに纏わる複雑な処理は、単純なqueryの発行だけでは済まないことがあります。 この「次」のレコードを探索するロジックを例に、ボブ*2がこれを実装していくお話をしましょう。 要件の定義 ボブの上司のサム*3は、クライアントの会社のサイトにブログモジュールを追加するプロジェクトの打ち合わせで、次の要件を定義し

    CakePHPアプリケーションの基本的な設計指針 (3) - カスタムfindタイプ - - 24時間CakePHP
  • Transitionコンポーネント1.0をリリースします。 - 24時間CakePHP

    6/19追記:@k1LoWさんが紹介記事を書いてくれました。ありがとうございます! 概要 @k1LoWさんの多大な助力もあり、多くのバグフィックスと新機能の追加がありました。 トータルで89のテストケースがパスし、実践投入が現実的になりましたので、ここに1.0をリリースすることをお知らせします。 ダウンロード http://github.com/hiromi2424/TransitionComponent/downloads 「1.0」をダウンロードしてください。 主な新機能 Session->setFlash()のパラメータが全て指定できるように、$flashParamsプロパティが導入されました。(k1LoWさんの提案) mergedData()の引数に$callbackがつきました。これによりマージの仕方を好みに変更できます。デフォルトがSet::merge()になりました。(以前は

    Transitionコンポーネント1.0をリリースします。 - 24時間CakePHP
  • CakePHPアプリケーションの基本的な設計指針 (1) - URL設計 - - 24時間CakePHP

    イントロダクション CakePHPはMVCデザインパターンを採用しており、基的にこれに従った設計が基となります。 しかし、ある程度開発が進んだところで、やっかいな設計の問題にぶち当たることは多いですよね。 そこで、よくある問題を取り上げて、設計の指針としてまとめてみることにします。 注:とても1回で書ききれるとは思えません。連載となる可能性が高いです。 URL設計 CakePHPのURLは、最初は独特に見えたかもしれません。 http://example.com/users/view/1 などよりも、http://example.com/user/hiromi2424 などの見栄えを期待していた方も多いのではないでしょうか。 しかし、だからといって以下のようなアクション、URLの呼び出し方は、後々に響いてきます。 <?php // Route Router::connect( '/us

    CakePHPアプリケーションの基本的な設計指針 (1) - URL設計 - - 24時間CakePHP
  • モデルの配列を管理するCollectionableプラグイン - Optionsビヘイビア - 24時間CakePHP

    Collectionableプラグインとは モデルのメソッドの引数やプロパティには、大きな配列が用いられるものがあります。 この管理を適当にすると、コピペの嵐になりがちです。 しかし毎度毎度、その管理の為のコードを書くのは億劫ですし、ロジックのミスにより予期しないバグの混入に陥ることがあります。 Collectionableプラグインは、そのような汎用的な配列の管理を提供するためのもので、配列の共通部分を減らし、かつ柔軟な切り替えを行うことを可能にします。 このプラグインはGitHubで公開しています。以下からダウンロードするかcloneするかsubmoduleとしてご利用ください。 また、英語ですがreadmeにはサンプルコードを載せてあります。 hiromi2424/Collectionable - GitHub このプラグインには現在4つのビヘイビアが存在します。今回は、そのうち最も

    モデルの配列を管理するCollectionableプラグイン - Optionsビヘイビア - 24時間CakePHP
    uechoco
    uechoco 2011/02/24
    配列管理、Collectionable
  • KcaptchaプラグインでさくっとCaptcha実装 - 24時間CakePHP

    Kcaptchaプラグインとは このプラグインは、KCAPTCHAをものすごい簡単に使おうという趣旨のもと作られました。 単純な使い方ではほんとにあっという間に使うことが可能になります。 hiromi2424/CakePHP-Kcaptcha-Plugin - GitHub 上記でこのプラグインをMITライセンスで公開しています。 以下にREADMEの抜粋を訳したものを載せておきます。 インストール pluginsディレクトリで、 git clone git://github.com/hiromi2424/CakePHP-Kcaptcha-Plugin.git kcaptcha またはリポジトリのカレントディレクトリで、 git submodule add git://github.com/hiromi2424/CakePHP-Kcaptcha-Plugin.git plugins/kca

    KcaptchaプラグインでさくっとCaptcha実装 - 24時間CakePHP
  • Re: 中間テーブルのcreated、modifiedについて - 24時間CakePHP

    イントロダクション CakePHPのhasAndBelongsToMany(以下habtmと呼ぶ)機構は、期待する振る舞いをしないことがあります。 CakePHPはそのマニュアルで、habtmが複雑になったときについてこう言及しています: http://book.cakephp.org/ja/view/1034/Saving-Related-Model-Data-HABTM また、join table (結合の情報を記述するテーブル) に (関係の作成時刻や、メタデータなどの) フィールドを付け加えたい場合にも言及しておきましょう。HABTM の join table に付け加える事もできますが、もっと簡単な方法もあります。 2つのモデルの HABTM 関係は、当は、hasMany と belongTo による3つのモデルの関係を省略して表したものです。 このように、hasManyとbe

    Re: 中間テーブルのcreated、modifiedについて - 24時間CakePHP
    uechoco
    uechoco 2011/02/17
    created
  • 1