Slide 1

Slide 1 text

Symfonyの アーキテクチャ OGAWA Katsuhiro 2012/06/30 Symfony勉強会#6

Slide 2

Slide 2 text

‣খ઒༤େ@fivestr ‣גࣜձࣾΫϩίε ‣ύʔϑΣΫτPHP ‣ޮ཰తͳWebΞϓϦ έʔγϣϯͷ࡞Γํ ‣ઌ೔25ࡀʹͳΓ·ͨ͠ ABOUT ME

Slide 3

Slide 3 text

AGENDA ‣symfony 1.xͷΞʔΩςΫνϟ ‣Symfony2ͷΞʔΩςΫνϟ ‣ORMͷΞʔΩςΫνϟ ‣ΞʔΩςΫνϟʹؔ͢Δࢀߟॻ੶

Slide 4

Slide 4 text

アーキテクチャとは ‣ιϑτ΢ΣΞͷʮઃܭࢥ૝ʯ ‣ʮߏ଄ʯΛࢦ͢৔߹΋͋Δ

Slide 5

Slide 5 text

symfony 1 ‣WebΞϓϦέʔγϣϯϑϨʔϜ ϫʔΫ ‣ػೳ͕๛෋ ‣࣮੷ଟ਺ ‣Delicious, Dailymotion

Slide 6

Slide 6 text

フレームワークの内部 ‣symfony͸ػೳ͕๛෋ ‣ೝূ؅ཧ ‣ϧʔςΟϯά ‣ϑΥʔϜ ‣ςϯϓϨʔτ ‣ϩΪϯά

Slide 7

Slide 7 text

No content

Slide 8

Slide 8 text

フレームワークの内部 ‣framework ‣૊Έ߹ΘͤͯWebΞϓϦͷϑ ϨʔϜϫʔΫͱͯ͠ػೳ͢Δ ‣platform ‣୯ମͰ΋ར༻ՄೳͳϥΠϒϥϦ ‣symfony 1.1͔Β໌֬ʹ

Slide 9

Slide 9 text

フレームワークの内部 ‣platform෦෼ʹ͓͚ΔϥΠϒϥϦ ͷ֦ு͸Մೳ͕ͩɺ಺෦Ͱ͸ΘΓ ͱڧҾͰ൚༻ੑͷͳ͍࣮૷ʹͳͬ ͍ͯͨ

Slide 10

Slide 10 text

プラグイン ‣ผͷϥΠϒϥϦͳͲΛ؆୯ʹ૊Έ ࠐΊΔΑ͏ʹ͢Δ࢓૊Έ ‣Doctrine΍jQuery ‣ࣗ෼Ͱ΋࡞ΕΔ ‣ձࣾͰڞ௨ϥΠϒϥϦΛ࡞Δ

Slide 11

Slide 11 text

プラグイン ‣ϓϥάΠϯͷ࢓૊Έͷ͓͔͛Ͱ؆ ୯ʹϑϨʔϜϫʔΫͷ֦ு΋Մೳ ʹ

Slide 12

Slide 12 text

プラグイン ‣࠷ॳ͔ΒϓϥάΠϯ಺ͰΞϓϦΛ ։ൃ͢Δ͜ͱ΋࢓૊Έ্Մೳ ‣ΞϓϦ͝ͱ࢖͍ճͤΔ

Slide 13

Slide 13 text

Symfony2 ‣symfonyͷޙܧʹ౰ͨΔSymfony2 ‣Ұ͔Βॻ͖௚͞ΕͨͨΊɺ1ܥͱ ͸·ͬͨ͘΂ͭ΋ͷͱݴΘΕΔ͜ ͱ΋ଟ͍ ‣࣮੷͋Γ ‣ ‣Overblog

Slide 14

Slide 14 text

symfony 1とSymfony2 ‣frameworkͱplatform͕ΑΓ໌֬ ʹ෼཭͞Εͨ ‣ਓؾͩͬͨϓϥάΠϯͷ࢓૊Έ͕ ΑΓ౰ͨΓલͷ΋ͷʹ ‣BundleͱComponent

Slide 15

Slide 15 text

Component ‣୯ମͰར༻ՄೳͳϥΠϒϥϦΛ ύοέʔδԽͨ͠΋ͷ͕

Slide 16

Slide 16 text

Component ‣EventDispatcher ‣Routing ‣Templating ‣Yaml ‣HttpKernel ‣...

Slide 17

Slide 17 text

Bundle ‣ϓϥάΠϯͷΑ͏ͳ࢓૊Έ ‣ϑϨʔϜϫʔΫͷػೳ΋Bundleͱ ͯ͠ఏڙ͞Ε͍ͯΔ ‣FrameworkBundle

Slide 18

Slide 18 text

Bundle ‣ΞϓϦ΋Bundleͱͯ͠࡞੒ ‣StoreBundle ‣ϥΠϒϥϦ࿈ܞ ‣DoctrineBundle ‣MonologBundle

Slide 19

Slide 19 text

Bundle ‣ΞϓϦͷίʔυ΋Bundleͷதʹ࡞ Δ ‣͢΂ͯͷػೳ͕Bundleͱͯ͠ύο έʔδԽ͞ΕΔͨΊɺ͍ͭͰ΋࠶ ར༻Մೳ

Slide 20

Slide 20 text

DIコンテナ ‣ґଘؔ܎ͷ؅ཧΛҾ͖ड͚Δ ‣ίϯϙʔωϯτؒͷґଘ͸DIίϯ ςφʹઃఆ͞ΕΔ ‣DependencyInjection

Slide 21

Slide 21 text

Symfony2のアーキテクチャ ‣Symfony2Ͱ͸ɺBundleͱ Componentͱ͍͏֓೦͕ొ৔ͨ͠ ͕ɺߟ͑ํ͸symfony 1ͷ͔࣌Β ଘࡏ͍ͯͨ͠

Slide 22

Slide 22 text

Symfony2のアーキテクチャ ‣symfony 1ͷ͜Ζɺґଘੑͷ؅ཧ ͕ෳࡶԽ͍͕ͯͨ͠ɺDIίϯςφ ͷ࠾༻ʹΑΓ֦ுͷํ๏͕౷Ұ͞ Εͨ

Slide 23

Slide 23 text

フレームワークとして ‣Symfony2͸1͔Βॻ͔ΕͨͨΊ࣮ ૷ͦ͜΂ͭ΋ͷ͚ͩͲɺઃܭࢥ૝ ͷ෦෼͸symfony 1͔Βड͚ܧ͕ Ε͍ͯΔ

Slide 24

Slide 24 text

ORMのアーキテクチャ ‣symfony 1ͱSymfony2Ͱ͸ɺ ORM(Doctrine)ͷΞʔΩςΫνϟ ͕มߋ͞Ε͍ͯΔ ‣symfony 1: Active Record ‣Symfony2: Data Mapper

Slide 25

Slide 25 text

ORMのアーキテクチャ ‣Active Record ‣$record->save(); ‣Data Mapper ‣$mapper->save($record);

Slide 26

Slide 26 text

Active Record ‣ߦ(=Record)ΦϒδΣΫτ͕σʔ λϕʔεʹΞΫηε͢ΔػೳΛ ͍࣋ͬͯΔ

Slide 27

Slide 27 text

Active Record ‣ར༻͕؆୯ ‣ΦϒδΣΫτ͕ORMͷ੍໿Λड͚ Δ

Slide 28

Slide 28 text

Active Record ‣ػೳΛ࣋ͬͨΫϥεΛܧঝ͢Δ ‣DoctrineͳΒDoctrine_Record ‣PropelͳΒBaseObject ‣ΦϒδΣΫτ͕ORMͷ੍໿Λड͚ Δ

Slide 29

Slide 29 text

Data Mapper ‣ߦΦϒδΣΫτʹ͸खΛग़͞ͳ͍ ‣ܧঝෆཁ ‣Plain Old PHP Object ‣DataMapperΦϒδΣΫτΛհ͠ ͯσʔλϕʔε΁ΞΫηε͢Δ

Slide 30

Slide 30 text

Data Mapper ‣Data Mapperͷ৔߹ɺΦϒδΣΫ τʹ੍ݶ͕͔͔Βͳ͍ͨΊࣗ༝౓ ͕ߴ͍

Slide 31

Slide 31 text

参考書籍 ‣ΞʔΩςΫνϟΛਂ͘஌Δʹ͸ɺ ྑ࣭ͳॻ੶ΛಡΉͷ͕Α͍ ‣͍͍ͩͨߴ͍͚ͲɺΑ͍ຊ͸૬ ԠͷՁ஋͕͋Δ

Slide 32

Slide 32 text

PofEAA ‣ΤϯλʔϓϥΠζΞ ϓϦέʔγϣϯΞʔ ΩςΫνϟύλʔϯ ‣http:// www.amazon.co.jp/ dp/4798105538

Slide 33

Slide 33 text

ご清聴ありがとう ございました。