Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Symfonyのアーキテクチャ
Search
Katsuhiro Ogawa
July 01, 2012
Programming
3.2k
4
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Symfonyのアーキテクチャ
2012/06/30 Symfony勉強会 #6
Katsuhiro Ogawa
July 01, 2012
More Decks by Katsuhiro Ogawa
See All by Katsuhiro Ogawa
新規プロダクト開発に伴う既存マイクロサービスのリアーキテクティングとその後
fivestar
1
170
Goで学ぶSOLID原則
fivestar
0
450
メルカリ CSE チームの 歩みと取り組み / Steps and Tries in the CSE team for Mercari
fivestar
2
980
Go in Corporate Solutions Engineering
fivestar
0
2.6k
いつまでPHP 5.x使ってるの
fivestar
1
2.1k
PHP のドキュメントを読んで PHP のことをもっと知ろう
fivestar
1
3.4k
CrocosSecurityBundleを Symfony3.0に対応した話
fivestar
0
320
PHP BLT だけど HTML5 の コンテンツモデルのお話
fivestar
0
2.5k
THE NEW "PERFECT PHP" WILL BE COMING SOON
fivestar
0
8.2k
Other Decks in Programming
See All in Programming
Swiftのレキシカルスコープ管理
kntkymt
0
220
決定論的オーケストレーションの設計と実装 / Design and Implementation of Deterministic Orchestration
nrslib
3
1.3k
net-httpのHTTP/2対応について
naruse
0
470
The ROI of Quarkus for Spring Boot Applications
hollycummins
0
110
These Five Tricks Can Make Your Apps Greener, Cheaper, & Nicer
hollycummins
0
280
Oxlintのカスタムルールの現況
syumai
6
1.1k
dRuby over BLE
makicamel
2
330
気づいたらRubyで100作品 ー クリエイティブコーディングが生活の一部になるまで / 100 Ruby Sketches Later: How Creative Coding Became Part of My Life
chobishiba
3
560
Hunting Vulnerabilities in Symfony with LLMs
vinceamstoutz
0
540
jQueryをバージョンアップする前に使いたいjQuery Migrate
matsuo_atsushi
0
200
Signal Forms: Beyond the Basics @ngBaguette 2026 in Paris
manfredsteyer
PRO
0
240
ユニットテストの先へ:テスト技法で要求・仕様を整理するJava開発実践 / Beyond_Unit_Testing_Practical_Java_Development_Techniques_for_Organizing_Requirements_and_Specifications
shimashima35
0
390
Featured
See All Featured
Crafting Experiences
bethany
1
180
SEO for Brand Visibility & Recognition
aleyda
0
4.6k
The SEO identity crisis: Don't let AI make you average
varn
0
490
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
2.9k
It's Worth the Effort
3n
188
29k
Joys of Absence: A Defence of Solitary Play
codingconduct
1
390
Imperfection Machines: The Place of Print at Facebook
scottboms
270
14k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
55k
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
450
Optimising Largest Contentful Paint
csswizardry
37
3.7k
Transcript
Symfonyの アーキテクチャ OGAWA Katsuhiro 2012/06/30 Symfony勉強会#6
‣খ༤େ@fivestr ‣גࣜձࣾΫϩίε ‣ύʔϑΣΫτPHP ‣ޮతͳWebΞϓϦ έʔγϣϯͷ࡞Γํ ‣ઌ25ࡀʹͳΓ·ͨ͠ ABOUT ME
AGENDA ‣symfony 1.xͷΞʔΩςΫνϟ ‣Symfony2ͷΞʔΩςΫνϟ ‣ORMͷΞʔΩςΫνϟ ‣ΞʔΩςΫνϟʹؔ͢Δࢀߟॻ੶
アーキテクチャとは ‣ιϑτΣΞͷʮઃܭࢥʯ ‣ʮߏʯΛࢦ͢߹͋Δ
symfony 1 ‣WebΞϓϦέʔγϣϯϑϨʔϜ ϫʔΫ ‣ػೳ͕๛ ‣࣮ଟ ‣Delicious, Dailymotion
フレームワークの内部 ‣symfonyػೳ͕๛ ‣ೝূཧ ‣ϧʔςΟϯά ‣ϑΥʔϜ ‣ςϯϓϨʔτ ‣ϩΪϯά
None
フレームワークの内部 ‣framework ‣Έ߹ΘͤͯWebΞϓϦͷϑ ϨʔϜϫʔΫͱͯ͠ػೳ͢Δ ‣platform ‣୯ମͰར༻ՄೳͳϥΠϒϥϦ ‣symfony 1.1͔Β໌֬ʹ
フレームワークの内部 ‣platform෦ʹ͓͚ΔϥΠϒϥϦ ͷ֦ுՄೳ͕ͩɺ෦ͰΘΓ ͱڧҾͰ൚༻ੑͷͳ͍࣮ʹͳͬ ͍ͯͨ
プラグイン ‣ผͷϥΠϒϥϦͳͲΛ؆୯ʹΈ ࠐΊΔΑ͏ʹ͢ΔΈ ‣DoctrinejQuery ‣ࣗͰ࡞ΕΔ ‣ձࣾͰڞ௨ϥΠϒϥϦΛ࡞Δ
プラグイン ‣ϓϥάΠϯͷΈͷ͓͔͛Ͱ؆ ୯ʹϑϨʔϜϫʔΫͷ֦ுՄೳ ʹ
プラグイン ‣࠷ॳ͔ΒϓϥάΠϯͰΞϓϦΛ ։ൃ͢Δ͜ͱΈ্Մೳ ‣ΞϓϦ͝ͱ͍ճͤΔ
Symfony2 ‣symfonyͷޙܧʹͨΔSymfony2 ‣Ұ͔Βॻ͖͞ΕͨͨΊɺ1ܥͱ ·ͬͨͭ͘ͷͱݴΘΕΔ͜ ͱଟ͍ ‣࣮͋Γ ‣ ‣Overblog
symfony 1とSymfony2 ‣frameworkͱplatform͕ΑΓ໌֬ ʹ͞Εͨ ‣ਓؾͩͬͨϓϥάΠϯͷΈ͕ ΑΓͨΓલͷͷʹ ‣BundleͱComponent
Component ‣୯ମͰར༻ՄೳͳϥΠϒϥϦΛ ύοέʔδԽͨ͠ͷ͕
Component ‣EventDispatcher ‣Routing ‣Templating ‣Yaml ‣HttpKernel ‣...
Bundle ‣ϓϥάΠϯͷΑ͏ͳΈ ‣ϑϨʔϜϫʔΫͷػೳBundleͱ ͯ͠ఏڙ͞Ε͍ͯΔ ‣FrameworkBundle
Bundle ‣ΞϓϦBundleͱͯ͠࡞ ‣StoreBundle ‣ϥΠϒϥϦ࿈ܞ ‣DoctrineBundle ‣MonologBundle
Bundle ‣ΞϓϦͷίʔυBundleͷதʹ࡞ Δ ‣ͯ͢ͷػೳ͕Bundleͱͯ͠ύο έʔδԽ͞ΕΔͨΊɺ͍ͭͰ࠶ ར༻Մೳ
DIコンテナ ‣ґଘؔͷཧΛҾ͖ड͚Δ ‣ίϯϙʔωϯτؒͷґଘDIίϯ ςφʹઃఆ͞ΕΔ ‣DependencyInjection
Symfony2のアーキテクチャ ‣Symfony2ͰɺBundleͱ Componentͱ͍͏֓೦͕ొͨ͠ ͕ɺߟ͑ํsymfony 1ͷ͔࣌Β ଘࡏ͍ͯͨ͠
Symfony2のアーキテクチャ ‣symfony 1ͷ͜Ζɺґଘੑͷཧ ͕ෳࡶԽ͍͕ͯͨ͠ɺDIίϯςφ ͷ࠾༻ʹΑΓ֦ுͷํ๏͕౷Ұ͞ Εͨ
フレームワークとして ‣Symfony21͔Βॻ͔ΕͨͨΊ࣮ ͦͭ͜ͷ͚ͩͲɺઃܭࢥ ͷ෦symfony 1͔Βड͚ܧ͕ Ε͍ͯΔ
ORMのアーキテクチャ ‣symfony 1ͱSymfony2Ͱɺ ORM(Doctrine)ͷΞʔΩςΫνϟ ͕มߋ͞Ε͍ͯΔ ‣symfony 1: Active Record ‣Symfony2:
Data Mapper
ORMのアーキテクチャ ‣Active Record ‣$record->save(); ‣Data Mapper ‣$mapper->save($record);
Active Record ‣ߦ(=Record)ΦϒδΣΫτ͕σʔ λϕʔεʹΞΫηε͢ΔػೳΛ ͍࣋ͬͯΔ
Active Record ‣ར༻͕؆୯ ‣ΦϒδΣΫτ͕ORMͷ੍Λड͚ Δ
Active Record ‣ػೳΛ࣋ͬͨΫϥεΛܧঝ͢Δ ‣DoctrineͳΒDoctrine_Record ‣PropelͳΒBaseObject ‣ΦϒδΣΫτ͕ORMͷ੍Λड͚ Δ
Data Mapper ‣ߦΦϒδΣΫτʹखΛग़͞ͳ͍ ‣ܧঝෆཁ ‣Plain Old PHP Object ‣DataMapperΦϒδΣΫτΛհ͠ ͯσʔλϕʔεΞΫηε͢Δ
Data Mapper ‣Data Mapperͷ߹ɺΦϒδΣΫ τʹ੍ݶ͕͔͔Βͳ͍ͨΊࣗ༝ ͕ߴ͍
参考書籍 ‣ΞʔΩςΫνϟΛਂ͘Δʹɺ ྑ࣭ͳॻ੶ΛಡΉͷ͕Α͍ ‣͍͍ͩͨߴ͍͚ͲɺΑ͍ຊ૬ ԠͷՁ͕͋Δ
PofEAA ‣ΤϯλʔϓϥΠζΞ ϓϦέʔγϣϯΞʔ ΩςΫνϟύλʔϯ ‣http:// www.amazon.co.jp/ dp/4798105538
ご清聴ありがとう ございました。