• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Ja story of cakephp2.0
 

Ja story of cakephp2.0

on

  • 1,664 views

 

Statistics

Views

Total Views
1,664
Views on SlideShare
1,658
Embed Views
6

Actions

Likes
0
Downloads
8
Comments
0

1 Embed 6

http://localhost 6

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Ja story of cakephp2.0 Ja story of cakephp2.0 Presentation Transcript

    • Story of CakePHP 2.0 2011.1.17 CakePHP 新春勉強会 東京
    • About Me 名前 : 清水 紘己 ( hiromi2424 ) 職業 : Web 開発 ( フリーランス ) ライブラリ : github ( Transition , ModularAuth ) 活動 : 翻訳 趣味 : 歌、ビール!!!!!!
    • イントロダクション
    • 数多くの改善点をもつ CakePHP 2.0 もはや 1.x と比べて別物に見える しかし多くの互換性を保持してもいる ほとんどのライブラリやアプリケーションは簡単に移行できるとも言える イントロダクション
    • 概要 疎結合化と委譲 リクエストとレスポンス Auth オブジェクトの動的な呼び出し その他 解決された数多くの問題 Security コンポーネント ページネーション より柔軟になったルーティング Lazy Loading まとめ
    • 疎結合化と委譲
    • 疎結合化と委譲 現在のリクエストの 処理 リクエストとレスポンス 矛盾を生んでいた テストが困難 醜い回避策 継承が不可能
    • 疎結合化と委譲 CakePHP 2.0 でのリクエストの 処理 リクエストとレスポンス 同じオブジェクト 共通の API リクエストの解析 便利なメソッド
    • 疎結合化と委譲 コントローラかどこかで $this-> request ->here $this->params[ ‘ prefix ’ ] // アクセスできるけど 非推奨 $this-> request -> data (‘ User.name ’); // name を返す $this->request->data('User.ip_address', $this-> request -> clientIp () ); リクエストとレスポンス
    • 疎結合化と委譲 CakePHP 2.0 でのレスポンス処理 リクエストとレスポンス HTTP レスポンスの処理は Response オブジェクトを通して行われる 強力な助っ人 メディアのレンダリング ダウンロード HTTP システム
    • 疎結合化と委譲 Auth の責任が重すぎた Auth Post ログインの検証 ログイン・ログアウト処理 ユーザデータの読み込み 数多くの 権限処理パターン DarkAuth OpenID と OAuth
    • 疎結合化と委譲 Auth は分割される (予定は未定) Auth Authentication と Authorization Basic 認証 、 Digest 認証 が既にコアに作られている コアチームは OpenID に対応しようと試みている
    • 疎結合化と委譲 ObjectCollectio n の登場 オブジェクトの動的な呼び出し これまで は、種々のオブジェクトを読み込むための似たようなパターンが存在していた コンポーネント、ヘルパー、タスクは 動的に 読み込むことができなかった コレクションパターンが ObjectCollection に集約された
    • 疎結合化と委譲 コレクションの共通 API オブジェクトの動的な呼び出し ObjectCollection load() attached() trigger() other methods 互換性を持つ attach() のような メソッドもまた利用可能
    • 疎結合化と委譲 コントローラ内で $this->Components-> load ('Cookie', array('name' => 'MyCookie')) コンポーネント内で $this->Auth = $this-> _Collection -> load ('Auth'); ビュー内で $this->Time = $this-> loadHelper (‘Time’); // 簡便メソッド $this->Time = $this-> Helpers -> load ('Time'); モデル内で $this->Behaviors-> load ('Containable'); $this->Behaviors->attach(‘Containable’); // 互換性のある呼び出し オブジェクトの動的な呼び出し
    • 疎結合化と委譲 多数のクラスが 委譲 するようになった その他 セッションハンドラーのオブジェクト化 設定リーダーの登場 YAML 、 XML 、 JSON のような好きなフォーマットの設定ファイルを読み込めるようになった エラーハンドラーと例外レンダラー cakeError () は例外のただのシミュレーションだった core の設定でどのクラスのメソッドを使うか指定できる カスタムオブジェクトを使うことによって 高度、自由な開発が可能
    • 解決された数多くの問題
    • 解決された数多くの問題 CSRF 対策の改善 Securty コンポーネント CSRF 対策 は 動的なフォーム の生成を阻害していた CSRF 対策とフォーム改ざん対策 が密に結合していた CSRF 対策を無効にすることはフォーム改ざん対策も無効にすることを意味していた これらは独立した機能になった
    • 解決された数多くの問題 マルチタイムトークンが利用可能に Securty コンポーネント ワンタイムトークンしか使えなかった それが不便なことがたびたびあった 今や Security コンポーネントは実用的な使い方ができるようになった
    • 解決された数多くの問題 ページネーションの GET メソッドのサポート ページネーション クエリ文字列の解析だけはサポートされていた クエリ文字列の生成はサポートされていなかった GET メソッドによるページネーションが完全にサポートされるようになった
    • 解決された数多くの問題 新しいページネーションのオプション ページネーション $maxLimit $limit が 高すぎる値に設定される ことを防ぐ $paramType GET メソッドの為に ‘ querystring’ を指定できる ' convertKeys ' for PaginatorHelper::options() 他のルーティングパラメーターを含めることができるようになる
    • 解決された数多くの問題 ビヘイビアでページネーションができるようになった ページネーション モデルでビヘイビアを通したメソッドが利用可能か調べる方法が無かった Model:: hasMethod () が実装された モデルの該当メソッドとほぼ同じ paginate() paginateCount()
    • 解決された数多くの問題 名前付き引数に配列が使えるようになった より柔軟になったルーティング ルーターは名前付き引数で配列を扱えなかった Router::url(array('named' => array())); => named: Array /named[hoge][piyo]:fuga => array('named [hoge][piyo] ' => 'fuga') 深い階層をもつ配列が使えるようになった
    • 解決された数多くの問題 フル URL が生成できるようになった より柔軟になったルーティング 1. 3 のカスタムルートは 相対 URL しか扱えなかった function match($url) { return '/users/login'; } 2.x では 絶対 URL を扱えるようになった function match($url) { return ' https :// auth. example.com/users/login'; }
    • 解決された数多くの問題 様々な場所での Lazy Loading Lazy Loading モデルの読み込みはとてもコストが高い LazyModel コアで lazy loading をサポートするようになった コンポーネント ヘルパー タスク アソシエーションモデル コントローラ直下のコンポーネントは遅延読み込み されない
    • まとめ 数え切れないほどの変更の数々 PHPUnit DataSource の改善 ・・・などなど コアチームは互換な方法を保持することに尽力してる 2.0 を使わない手は無い