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

Laravelにおける後悔しないためのアプリケーション設計

localdisk
November 02, 2016

 Laravelにおける後悔しないためのアプリケーション設計

laravel.osaka 2016 で発表したものです。

localdisk

November 02, 2016
Tweet

More Decks by localdisk

Other Decks in Programming

Transcript

  1. Laravelʹ͓͚Δ
    ޙչ͠ͳ͍ͨΊͷ
    ΞϓϦέʔγϣϯઃܭ
    Laravel Osaka 2016
    @localdisk

    View Slide

  2. ࣗݾ঺հ
    দඌେ
    ·͓ͭ·͞Δ
    EEE
    ΤϯδχΞ
    Πϊϕʔλʔδϟύϯॴଐ ΤϯδχΞɾσβ
    ΠφɾσΟϨΫλΛืूத

    ޷ධൃചத
    @localdisk

    View Slide

  3. ืूͯ͠·͢ʂʂʂ

    View Slide

  4. ޙչ͠ͳ͍ΞϓϦέʔγϣϯઃܭ
    ͱ͸?

    View Slide

  5. όάΛग़͞ͳ͍།Ұͷํ๏͸ϓϩάϥϜΛॻ͔ͳ͍͜ͱͩ
    ʕϓϩάϥϚͷ֨ݴʕ

    View Slide

  6. ͦ͏͍͏Θ͚ʹ΋͍͔ͳ͍

    View Slide

  7. ݱ࣮͸ݫ͍͠

    View Slide

  8. ଥڠͯ͠
    γϯϓϧ͞Λͨ΋ͭ

    View Slide

  9. • ޙչ͠ͳ͍ͨΊʹͲ͏͢Δ͔?
    • FacadeΛ߇͑ͯΈΔ
    • Named Routes
    • FormRequest
    • ControllerͰEloquentͷϝιουνΣΠϯېࢭ
    • Repository Pattern
    Agenda

    View Slide

  10. FacadeΛ߇͑ͯΈΔ

    View Slide

  11. • ੩తϝιουͷΑ͏ʹ࢖͑Δ
    • ࣮ࡍ͸αʔϏείϯςφ͔ΒऔΓग़͍ͯ͠Δ
    • Ͳ͔͜ΒͰ΋࢖͑Δ
    • ViewͷதͰ΋
    • \Auth::check()
    • ݁ՌɺΫϥεͷ੹຿͕େ͖͘ͳΔ
    Facade ͸ศར͚ͩͲ…

    View Slide

  12. https://readouble.com/laravel/5.3/ja/facades.html#facade-class-reference
    DIΛ࢖͓͏

    View Slide

  13. ͳΔ΂͘ Contract ࢖͓͏
    DIΛ࢖͓͏(2)

    View Slide

  14. • Facade Λ࢖͏͔ΘΓʹ DI Λ͢Δͱ࢖༻͢Δͱ
    ϝιουͷҾ਺ʹ࢖༻͢ΔΫϥε͕ฒͿ
    • ͋ɺ΍͹͍ɻͱΘ͔Δɻ
    • FacadeΛܦ༝͠ͳ͍ͷͰएׯૣ͘ͳΔ
    ͳͥ DI ͔?

    View Slide

  15. Named Routes

    View Slide

  16. • Routeʹ໊લΛ͚ͭΔ
    • route(‘osaka’); ͰURL͕औಘͰ͖Δ
    • URL͕มΘͬͯ΋҆৺
    Named Routes

    View Slide

  17. FormRequest

    View Slide

  18. গͣͭ͠هड़ྔ͕ݮ͍ͬͯΔ
    ͔͠͠ϊΠζʹͳ͍ͬͯΔͷ͸൱Ίͳ͍
    Validation ͷมભ

    View Slide

  19. • php artisan make:request Ϋϥε໊
    • rulesϝιουΛ࣮૷
    FormRequest

    View Slide

  20. • ControllerͰϝιουΠϯδΣΫγϣϯ͢Δ͚ͩ
    • ϊΠζ͕ফ͑ͯϩδοΫʹूதͰ͖Δ
    FormRequest

    View Slide

  21. ControllerͰEloquentͷ
    ϝιουνΣΠϯېࢭ

    View Slide

  22. Model Binding

    View Slide

  23. ʮಉ݁͡ՌΛAPIͰฦͤΔΑ͏ʹ͠ͱ͍ͯͶʯ
    ͱݴΘΕͨΒ…ʁ
    ControllerͰϝιουνΣΠϯ͸μϝʂ

    View Slide

  24. ModelʹΫΤϦΛด͡ࠐΊΔ

    View Slide

  25. Repository Pattern

    View Slide

  26. • Eloquent͸ User::find ͷΑ͏ʹ੩తʹݺ΂
    ·͕͢ɺFacadeͰ͸ͳ͍ɻ
    • ΑͬͯshouldRecieveͱ͍͏ϝιου͸ଘࡏ͠
    ͳ͍
    • Eloquent͸DBʹґଘ͍ͯ͠Δ
    • ςετ͕ࠔΔ
    ͳͥ Repository Pattern?

    View Slide

  27. • ΠϯλʔϑΣʔεΛఆٛ
    Repository Patternͷ࡞Γํ

    View Slide

  28. • ΠϯλʔϑΣʔεΛ࣮૷ɻ͋ͱ͸ίϯτϩʔϥͰΠ
    ϯδΣΫγϣϯ͢Δ
    Repository Patternͷ࡞Γํ

    View Slide

  29. ࣭໰ͱ͔ʁ

    View Slide

  30. ͓ΘΓ

    View Slide