Enviar pesquisa
Carregar
ルーティングを使ってシンプルなアプリケーション開発を
•
Transferir como PPTX, PDF
•
1 gostou
•
1,740 visualizações
Kousuke Ebihara
Seguir
Tecnologia
Vista de apresentação de diapositivos
Denunciar
Compartilhar
Vista de apresentação de diapositivos
Denunciar
Compartilhar
1 de 24
Baixar agora
Recomendados
Kotatsu-Model in Openthology
Kotatsu-Model in Openthology
Kent Ishizawa
夜までラボ☆テレビ7月24日開催分
夜までラボ☆テレビ7月24日開催分
ikiikilab
第一回ナンセンスプレゼンテーションの会:ローマと道に関するいくつかの問題とその解決
第一回ナンセンスプレゼンテーションの会:ローマと道に関するいくつかの問題とその解決
You Koseki
JLPT 2nd level Reading
JLPT 2nd level Reading
Yoshifumi Murakami
teaching how to read Japanese with "Min-nano nihongo"
teaching how to read Japanese with "Min-nano nihongo"
Yoshifumi Murakami
マニュアル
マニュアル
guestfbb96b2
0423mitsubishi
0423mitsubishi
loftwork
ハノイの塔を実装してみる
ハノイの塔を実装してみる
Hiromu Shioya
Recomendados
Kotatsu-Model in Openthology
Kotatsu-Model in Openthology
Kent Ishizawa
夜までラボ☆テレビ7月24日開催分
夜までラボ☆テレビ7月24日開催分
ikiikilab
第一回ナンセンスプレゼンテーションの会:ローマと道に関するいくつかの問題とその解決
第一回ナンセンスプレゼンテーションの会:ローマと道に関するいくつかの問題とその解決
You Koseki
JLPT 2nd level Reading
JLPT 2nd level Reading
Yoshifumi Murakami
teaching how to read Japanese with "Min-nano nihongo"
teaching how to read Japanese with "Min-nano nihongo"
Yoshifumi Murakami
マニュアル
マニュアル
guestfbb96b2
0423mitsubishi
0423mitsubishi
loftwork
ハノイの塔を実装してみる
ハノイの塔を実装してみる
Hiromu Shioya
enNetforum Wakamatsu Presentation
enNetforum Wakamatsu Presentation
Forum
enNetforum Fukuoka Panelist
enNetforum Fukuoka Panelist
Forum
テスト駆動開発のエッセンス
テスト駆動開発のエッセンス
hiroyuki Yamamoto
あなたにもできるアジャイルプラクティス2008
あなたにもできるアジャイルプラクティス2008
Seiji Kaneko
【12-E-2】 SEC流品質作りこみESQR 組込みソフトウェア開発向け品質作り込みガイドの紹介
【12-E-2】 SEC流品質作りこみESQR 組込みソフトウェア開発向け品質作り込みガイドの紹介
devsumi2009
Agc紹介
Agc紹介
masaki.jimbo
【12-E-6】 ERP導入の投資対効果 ~SAPの導入事例を元に~
【12-E-6】 ERP導入の投資対効果 ~SAPの導入事例を元に~
devsumi2009
Ordinary Management
Ordinary Management
Koichi ITO
Newb CMS eco Business Solution
Newb CMS eco Business Solution
Kanji Syuto
地域サイト運営にあたって
地域サイト運営にあたって
おもっさま ミカメジャーナル
Meet Charlie Japanese
Meet Charlie Japanese
iug
GIGAPOD OFFICEHARD
GIGAPOD OFFICEHARD
tripodworks
Persona design method / ペルソナ概論
Persona design method / ペルソナ概論
Katsumi TAZUKE
10分でわかるやりたいこと支援サークル
10分でわかるやりたいこと支援サークル
idealchanger
SIG-SWO-A801-04
SIG-SWO-A801-04
guestb1e49d
2009年4月8日セミナー 4.レコメンデーション Q&A
2009年4月8日セミナー 4.レコメンデーション Q&A
Preferred Networks
Loftwork 20090416
Loftwork 20090416
武 河野
お前は PHP の歴史的な理由の数を覚えているのか
お前は PHP の歴史的な理由の数を覚えているのか
Kousuke Ebihara
XML と PHP のイケナイ関係 (セキュリティ的な意味で) -Introduction of XXE attack and XML Bomb with...
XML と PHP のイケナイ関係 (セキュリティ的な意味で) -Introduction of XXE attack and XML Bomb with...
Kousuke Ebihara
Open pne3 with_symfony
Open pne3 with_symfony
Kousuke Ebihara
Let's creating your own PHP (tejimaya version)
Let's creating your own PHP (tejimaya version)
Kousuke Ebihara
Hybrid Onboarding
Hybrid Onboarding
Kousuke Ebihara
Mais conteúdo relacionado
Mais procurados
enNetforum Wakamatsu Presentation
enNetforum Wakamatsu Presentation
Forum
enNetforum Fukuoka Panelist
enNetforum Fukuoka Panelist
Forum
テスト駆動開発のエッセンス
テスト駆動開発のエッセンス
hiroyuki Yamamoto
あなたにもできるアジャイルプラクティス2008
あなたにもできるアジャイルプラクティス2008
Seiji Kaneko
【12-E-2】 SEC流品質作りこみESQR 組込みソフトウェア開発向け品質作り込みガイドの紹介
【12-E-2】 SEC流品質作りこみESQR 組込みソフトウェア開発向け品質作り込みガイドの紹介
devsumi2009
Agc紹介
Agc紹介
masaki.jimbo
【12-E-6】 ERP導入の投資対効果 ~SAPの導入事例を元に~
【12-E-6】 ERP導入の投資対効果 ~SAPの導入事例を元に~
devsumi2009
Ordinary Management
Ordinary Management
Koichi ITO
Newb CMS eco Business Solution
Newb CMS eco Business Solution
Kanji Syuto
地域サイト運営にあたって
地域サイト運営にあたって
おもっさま ミカメジャーナル
Meet Charlie Japanese
Meet Charlie Japanese
iug
GIGAPOD OFFICEHARD
GIGAPOD OFFICEHARD
tripodworks
Persona design method / ペルソナ概論
Persona design method / ペルソナ概論
Katsumi TAZUKE
10分でわかるやりたいこと支援サークル
10分でわかるやりたいこと支援サークル
idealchanger
SIG-SWO-A801-04
SIG-SWO-A801-04
guestb1e49d
2009年4月8日セミナー 4.レコメンデーション Q&A
2009年4月8日セミナー 4.レコメンデーション Q&A
Preferred Networks
Loftwork 20090416
Loftwork 20090416
武 河野
Mais procurados
(17)
enNetforum Wakamatsu Presentation
enNetforum Wakamatsu Presentation
enNetforum Fukuoka Panelist
enNetforum Fukuoka Panelist
テスト駆動開発のエッセンス
テスト駆動開発のエッセンス
あなたにもできるアジャイルプラクティス2008
あなたにもできるアジャイルプラクティス2008
【12-E-2】 SEC流品質作りこみESQR 組込みソフトウェア開発向け品質作り込みガイドの紹介
【12-E-2】 SEC流品質作りこみESQR 組込みソフトウェア開発向け品質作り込みガイドの紹介
Agc紹介
Agc紹介
【12-E-6】 ERP導入の投資対効果 ~SAPの導入事例を元に~
【12-E-6】 ERP導入の投資対効果 ~SAPの導入事例を元に~
Ordinary Management
Ordinary Management
Newb CMS eco Business Solution
Newb CMS eco Business Solution
地域サイト運営にあたって
地域サイト運営にあたって
Meet Charlie Japanese
Meet Charlie Japanese
GIGAPOD OFFICEHARD
GIGAPOD OFFICEHARD
Persona design method / ペルソナ概論
Persona design method / ペルソナ概論
10分でわかるやりたいこと支援サークル
10分でわかるやりたいこと支援サークル
SIG-SWO-A801-04
SIG-SWO-A801-04
2009年4月8日セミナー 4.レコメンデーション Q&A
2009年4月8日セミナー 4.レコメンデーション Q&A
Loftwork 20090416
Loftwork 20090416
Mais de Kousuke Ebihara
お前は PHP の歴史的な理由の数を覚えているのか
お前は PHP の歴史的な理由の数を覚えているのか
Kousuke Ebihara
XML と PHP のイケナイ関係 (セキュリティ的な意味で) -Introduction of XXE attack and XML Bomb with...
XML と PHP のイケナイ関係 (セキュリティ的な意味で) -Introduction of XXE attack and XML Bomb with...
Kousuke Ebihara
Open pne3 with_symfony
Open pne3 with_symfony
Kousuke Ebihara
Let's creating your own PHP (tejimaya version)
Let's creating your own PHP (tejimaya version)
Kousuke Ebihara
Hybrid Onboarding
Hybrid Onboarding
Kousuke Ebihara
Using Symfony Templating On Symfony 1
Using Symfony Templating On Symfony 1
Kousuke Ebihara
Introduction of symfony development process & What's symfony 1.3?
Introduction of symfony development process & What's symfony 1.3?
Kousuke Ebihara
OAuthで気持ちのいいアクセス制御を
OAuthで気持ちのいいアクセス制御を
Kousuke Ebihara
Php5.3ってなんなんだー
Php5.3ってなんなんだー
Kousuke Ebihara
Mais de Kousuke Ebihara
(9)
お前は PHP の歴史的な理由の数を覚えているのか
お前は PHP の歴史的な理由の数を覚えているのか
XML と PHP のイケナイ関係 (セキュリティ的な意味で) -Introduction of XXE attack and XML Bomb with...
XML と PHP のイケナイ関係 (セキュリティ的な意味で) -Introduction of XXE attack and XML Bomb with...
Open pne3 with_symfony
Open pne3 with_symfony
Let's creating your own PHP (tejimaya version)
Let's creating your own PHP (tejimaya version)
Hybrid Onboarding
Hybrid Onboarding
Using Symfony Templating On Symfony 1
Using Symfony Templating On Symfony 1
Introduction of symfony development process & What's symfony 1.3?
Introduction of symfony development process & What's symfony 1.3?
OAuthで気持ちのいいアクセス制御を
OAuthで気持ちのいいアクセス制御を
Php5.3ってなんなんだー
Php5.3ってなんなんだー
ルーティングを使ってシンプルなアプリケーション開発を
1.
ルーティングを使って シンプルなアプリケーション開発を 株式会社手嶋屋海老原昂輔
<ebihara@tejimaya.com>
2.
Who am I?
海老原昂輔 (KousukeEbihara) 21歳 17歳(高校2年)の冬より有限会社手嶋屋 (当時)にアルバイトとして勤務し、 OpenPNEと出会う 私立日本大学芸術学部演劇学科を中退、 2008年10月に株式会社手嶋屋に入社し、 今に至る
3.
OSS 活動
OpenPNE3 Platform の生みの親 OpenPNE2, OpenPNE3 の lead developer (OpenPNE3) opCommunityTopicPluginの臨時 lead developer 関連する OSS プロジェクトへのパッチ提供 symfony Doctrine PHP Shindig Chiara_PEAR_Server
4.
それでは本題
今日はみなさんにsymfonyのルーティング の素晴らしさを訴えかける人として来ま した ただし OpenPNE3 では全然使いこなしてい ないところも残ってるけど……>< 基本的にはsymfony 1.2 を前提に解説しま す
5.
ところでみなさん、こんな アクションを書いてませんか?
6.
ところでみなさん、こんな アクションを書いてませんか?
7.
ところでみなさん、こんな アクションを書いてませんか?
8.
みなさんのアクションは
統一が取れてますか? member モジュールのメンバー追加用アク ションは create なのに、 diary モジュー ルだと対応するアクションが insert に なっている member モジュールと diary モジュールの 表示用アクション show は同じパラメータ を取るにもかかわらずバリデーション ルールが統一されていない
9.
ルーティングをうまく使うと
特定のリクエストパラメータからデータベー スのレコードを取得する処理や、レコードの 存在チェックをアクション側でおこなわなく て済む リクエストパラメータに関するバリデーショ ンをアクション側でおこなわなくて済む リクエストメソッドのチェックをアクション 側でおこなわなくて済む アクション名やバリデーション処理を共通化 しやすくなる
10.
レコード取得をアクション側で
おこなわないようにする apps/frontend/config/routing.ymlでルー ティングルールの設定をおこなう ルール処理用のクラスとしてsfObjectRouteを 使うよう設定 ここでは Doctrine に特化したsfDoctrineRouteとい うsfObjectRouteの派生クラスを例に取ります 対象となるモデルの設定等もおこなう
11.
レコード取得をアクション側で
おこなわないようにする こんな感じの設定になるはず
12.
レコード取得をアクション側で
おこなわないようにする アクション側で簡単アクセス これすら面倒であればpreExecute() に書 いたってよい アクション毎のパラメータの違いとかモデル の違いとかは全部ルーティング側で吸収して くれているので扱いやすいはず
13.
レコード取得をアクション側で
おこなわないようにする いろんなリクエストパラメータを組み合 わせてレコードを取得したい場合 指定したモデルに実在するフィールド名と同 じ名前のリクエストパラメータを指定した場 合、そのパラメータの値でレコードが絞り込 まれる e.g. /member/birthday/1988-04-23 ただし別モデルへの問い合わせが必要になる など、場合によってはsfObjectRouteクラスの 派生クラスの作成が必要になる
14.
レコードの存在チェックを
アクション側でおこなわないようにする 実はもうできています sfObjectRouteは、デフォルトではレコードが 取得できなかった場合に sfError404Exception をスローします
15.
レコードの存在チェックを アクション側でおこなわないようにする
ということは最初の show アクションはこ うすることも可能ですね!
16.
レコードの存在チェックを
おこなわないようにする レコードが取得できなくてもよい場合は 以下のように設定すればOK
17.
リクエストパラメータのバリデーションを アクション側でおこなわないようにする
簡単なバリデーションなら正規表現を 使って設定に書ける
18.
リクエストパラメータのバリデーションを アクション側でおこなわないようにする
複雑なバリデーションなら独自のsfRoute クラスの派生クラスが必要 型チェックとか 正規表現とかじゃなくてis_int使ったりとか 日付の妥当性チェックとか
19.
リクエストメソッドのチェックを
アクション側でおこなわないようにする またもや apps/frontend/config/routing.yml でルーティングルールの設定 クラスにsfRequestRouteを指定すればできま す
20.
アクション名やバリデーション処理
の共通化 sfRouteCollectionを使う ルーティングの設定類をまとめたクラス これを apps/frontend/config/routing.ymlで指定すること で、一気に複数のルーティング設定がおこなわれる ORM 毎にsf****RouteCollection的なクラスが用意 されているのでそれを使うのが手っ取り早い list new create edit update delete show
21.
アクション名やバリデーション処理
の共通化 これだけ 有効にするルールを指定することも
22.
最後に注意事項
今まで紹介してきたようにルーティングの設定をおこ なってアクションへのアクセス制御をおこなう場合、 必ず「symfonyデフォルトのルーティング設定を無効 化」してください ルーティングルールにマッチしなかった場合、 symfonyは別のルールにマッチするかどうかチェック して……ということを繰り返していきます。最終的に どのルールにもマッチしなければ無事 404 になります が、symfonyデフォルトの設定が残っている場合、 /:module/:action などのURLにより予期しない形でア クセスされてしまいます ですので、指定したルーティングルール経由でしかア クションのアクセスを認めない場合symfonyデフォル トのルーティング設定を無効にしなければなりません
23.
まとめ
リクエストからレコードを取得 それsfObjectRouteでできるよ! レコードの存在チェック それsfObjectRouteでできるよ! リクエストのバリデーション sfRouteの正規表現などでできるよ! 独自のルーティングクラスでもできるよ! リクエストメソッドのチェック それsfRequestRouteでできるよ! アクション名やバリデーション処理の共通化 sfRouteCollectionでやりやすくなるよ!
24.
質疑応答タイム
気軽に どうぞ!
Baixar agora