タグ

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

  • 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
  • よき祝日を - クリスマスケーキをお届けします - CakePHP 2.0開発版がリリースされました(訳) - 24時間CakePHP

    By markstory CakePHPコアチームはCakePHP 2.0.0-devをこんなにも早くお見せできることを誇りに思います。これは2.xブランチの最初のパッケージリリースとなります。2.0.0-devリリースは後方非互換な変更と新機能が多くあります。そして、まだ商用利用できるようにはなっていません。一番大きい非互換な変更は、CakePHP 2.0.xが少なくともPHP 5.2.6を必要とするということです。 PHP4及び5.2.6未満のPHP5のサポートは打ち切られました。 新機能 以下はCakePHP2.0の新機能に関する完全なリストではありませんが、これまでのハイライトは含まれています: テストフレームワークとしてPHPUnitの採用。PHPUnitはユニットテストのデファクトスタンダードであり、CakePHPも仲間入りになります。多くの後方互換性のある追加要素があるので、

    よき祝日を - クリスマスケーキをお届けします - CakePHP 2.0開発版がリリースされました(訳) - 24時間CakePHP
  • 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
  • バリデーションのベストプラクティス - 24時間CakePHP

    イントロダクション CakePHPの使い方は多種多様で、もちろん一つのやり方が正解ということはありません。 しかし、CakePHPはフレームワークであるわけで、想定された使い方以外ではその真価をなかなか発揮できません。 CakePHPにおけるモデルは、ビジネスロジックを置くレイヤとして想定されています。 そして、バリデーションを用いることによって保存のロジックを構築するということも想定されています。 これは、何故Cookbookで紹介されるコードが、ほとんどバリデーションとModel::save()の組み合わせであるかということかの答えにもなっています。 悪い例 あなたはModel::save()の代わりとして、以下のようなadd()メソッドをモデルに定義しているかもしれません: <?php class Post extends AppModel { var $validate = arr

    バリデーションのベストプラクティス - 24時間CakePHP
  • 2010-06-10 - 24時間CakePHP

    注意 この実装はクッキーにユーザ名とパスワードを保持させていますが、パスワードを保持させるのは大変危険なので、実際のアプリケーションで動かす場合は時限つきAuthorizeトークンを発行してそれを保持させる実装にするなど、クッキー盗聴対応を必ずしましょう。 トークンを使う実装に修正しました。(16:25) この実装は、クッキー盗聴対策のため、トークンを発行し、それをクッキーに保存します。 CakePHPのクッキーコンポーネントは賢く、Security.ciperSeedというキーを元に復号可能な暗号化をクッキーに対し施しているため、直に読めることはないのですが、それでも解析されたら丸見えになります。これを避けるため、パスワードを直接保存することがないようにしましょう。 ワンタイムトークンを使う実装に修正しました。(18:51) いつも同じトークンを発行してしまうと、再生(リプレイ)攻撃の脆

    2010-06-10 - 24時間CakePHP
  • 1