symfony 1.2を支えるサブフレームワーク

  • 3,166 views
Uploaded on

 

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
3,166
On Slideshare
0
From Embeds
0
Number of Embeds
3

Actions

Shares
Downloads
12
Comments
0
Likes
2

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. symfony 1.2 を支える サブフレームワーク 第 39 回 PHP 勉強会 fivestar
  • 2. あけましておめでとうございます
  • 3. symfony 1.2 ネタ ということで
  • 4. CakePHP1.2 に 対抗してみました
  • 5. 自己紹介
    • HN: fivestar (ふぁいぶすたー)
    • 名前 : 小川雄大(おがわかつひろ)
    • 所属 : アシアル株式会社
      • http://d.hatena.ne.jp/Fivestar/
      • http://wassr.jp/user/fivestar
  • 6. サブフレームワーク って どんなのがあるの?
  • 7. サブフレームワーク
    • Form Framework
    • Filter Framework
    • Routing Framework
    • ORM Framework
  • 8. 今日しゃべること
    • それぞれのサブフレームワークの紹介と簡単な使い方説明など
  • 9. Form Framework
  • 10. Form Framework
    • symfony 1.1 から追加
    • 入力フォームのレンダリング
      • sfWidget
    • 入力された値のバリデーション
      • sfValidator
    • CSRF 対策
  • 11. symfony 1.0 まで
  • 12. 入力フォーム
    • Form ヘルパー
  • 13. バリデーション
    • validate.yml
    • validateXxx / handleErrorXxx
  • 14. symfony 1.2 では
  • 15. Form クラス
    • sfForm を継承したクラスを作成
      • sfPropelForm / sfDoctrineForm
  • 16. 入力フォーム
    • Widget をレンダリング
  • 17. さらに短く
    • echo $form で一括レンダリング
      • デフォルトでは <tr> で囲われる
  • 18. バリデーション・保存
    • Form に bind して validate して save
  • 19. さらに短く
    • bindAndSave
      • bind -> validate -> save の流れを一括で
  • 20. Form Framework のメリット
    • アクションが簡潔に
      • handleError とはお別れ
    • クラスなので拡張が容易
    • 入力項目とバリデーションが一目でわかる
  • 21. Filter Framework
  • 22. Filter Framework
    • symfony 1.2 から追加
    • 検索用の sfForm
      • sfFormFilter extends sfForm
      • それぞれの ORM にあわせて拡張
        • sfFormFilterPropel / sfFormFilterDoctrine
  • 23. Form Framework の使い方
    • 基本的な扱い方は sfForm と同じ
      • configure / bind / render
      • widget / validator
    • sfFormFilterPropel
      • buildCriteria(array $values)
    • sfFormFilterDoctrine
      • buildQuery(array $values)
  • 24. sfFormFilterDoctrine の場合
  • 25. Routing Framework
  • 26. Routing Framework
    • symfony 1.2 から追加
    • RESTful なルーティングのサポート
  • 27.
  • 28. RESTful なルーティング?
    • sf_method
      • GET, POST, PUT, DELETE
    • URI (リソース)と 4 つのメソッドを組み合わせて ルーティングを行う
  • 29. 例 1
    • /user + GET => user/index
    • /user/new + GET => user/new
    • /user + POST => user/create
  • 30. 例 2
    • /user/1 + GET => user/show?id=1
    • /user/1/edit + GET => user/edit?id=1
    • /user/1 + PUT => user/update?id=1
    • /user/1 + DELETE => user/delete?id=1
  • 31. sf_method
    • <input type=“hidden” name=“ sf_method ” />
      • 自分で書くことは基本的にはない
    • $form->renderFormTag()
    • link_to(‘delete’, ‘user_delete’, $user, array( ‘method’ => ‘delete’ ))
  • 32. sfRoute
    • sfRoute
      • 従来のルーティングにあたるクラス
    • sfRequestRoute
      • sfRoute + sf_method
  • 33. sfObjectRoute
    • sfRequestRoute + オブジェクト
      • ルーティングからオブジェクトを取得
    • sfPropelRoute / sfDoctrineRoute
  • 34. object と list
    • object
      • 単一のオブジェクト (edit, show など )
      • $route->getObject()
    • list
      • オブジェクトのコレクション (index など )
      • $route->getObjects()
  • 35. sfObjectRouteCollection
    • sfObjectRoute を複数まとめたもの
      • 例 1 と例 2 で書いたものがデフォルトで定義済み
  • 36. ルーティングの定義
    • apps/xxx/config/routing.yml
  • 37. ルーティングとオブジェクト
    • url_for(‘user_edit’, $user )
    • // 以下と同一
    • url_for(‘@user_edit?id=’ . $user->getId())
    • url_for(‘user/edit?id=’ . $user->getId())
    • object タイプのルーティングのみ有効
    • @ はつけない
  • 38. ルーティングとアクション
    • getRoute()
      • Route オブジェクトを取得
      • $this->getRoute()->getObject()
    • generateUrl()
      • url_for と同じ
      • $this->generateUrl(‘user_show’, $user)
    • メソッドの判定が不要に
  • 39. 定義済みルーティングの確認
    • symfony app:routes application
  • 40. ORM Framework
  • 41. Propel
  • 42. Propel
    • symfony 1.1 からプラグインに
    • version 1.2 => 1.3
    • Creole => PDO
  • 43. The Creole Project is Dead
  • 44. Doctrine
  • 45. Doctrine
    • symfony 1.2 から公式にバンドル
    • http://www.doctrine-project.org/
      • 日本語のドキュメントも
    • だいぶ安定してきた感じ
    • I   Love Doctrine
  • 46. Doctrine_Query
    • 直感的なクエリ操作
  • 47. Configuration
    • ProjectConfiguration
      • sfDoctrinePlugin を有効
      • enableAllPluginsExcept(array(‘sfPropelPlugin’))
    • databases.yml
      • class を sfDoctrineDatabase に
  • 48. Doctrine に興味を持った方 http://d.hatena.ne.jp/Fivestar/
  • 49. symfony 1.2 を 今からはじめる方へ
  • 50.
  • 51. 素晴らしいチュートリアルが お待ちしてます
  • 52. ご清聴ありがとうございました End