Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Symfonyのアーキテクチャ

 Symfonyのアーキテクチャ

2012/06/30 Symfony勉強会 #6

Katsuhiro Ogawa

July 01, 2012
Tweet

More Decks by Katsuhiro Ogawa

Other Decks in Programming

Transcript

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  7. View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    ‣Overblog

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide