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

#phperkaigi 名著「パーフェクトPHP」のPart3に出てきたフレームワークを令和5年に書き直したらどんな感じですかね?

#phperkaigi 名著「パーフェクトPHP」のPart3に出てきたフレームワークを令和5年に書き直したらどんな感じですかね?

PHPerKaigi 2023の発表資料です
https://fortee.jp/phperkaigi-2023/proposal/db787adc-c855-4114-99b6-8c6958d47b42

参考文献・動画を、別途ブログ記事として記載しているのでそちらもぜひご覧ください
https://daisuki.nichiyoubi.land/entry/2023/03/11/221306

hideki kinjyo
PRO

March 23, 2023
Tweet

More Decks by hideki kinjyo

Other Decks in Programming

Transcript

  1. PHP
    Part3
    5
    PHPerKaigi 2023


    Hideki Kinjyo


    GitHub: o0h / Twitter: @o0h_


    [ൃද൛]

    View Slide

  2. ࣗݾ঺հ
    /
    GitHub: @o0h / Twitter: @o0h_
    FW CakePHP


    View Slide

  3. ⾠ΊͬͪΌग़ͯ͘Δ͚Ͳઆ໌͠ͳ͍֓೦
    DI
    PSR PHP-FIG
    PSR-7/15/17, PSR-11
    =>


    View Slide

  4. ༧Ίݴ͓ͬͯ͘͜ͱ
    
 

    ( )
    https://speakerdeck.com/o0h/phperkaigi-2023

    View Slide

  5. View Slide

  6. PHP
    HP

    https://gihyo.jp/book/2010/978-4-7741-4437-5

    View Slide

  7. ॻ੶ͷجຊ৘ใ
    2010 11 12
    Part-1: PHP overview / Part 2: PHP / Part 3:
    Web / Part 4: PHP /
    Part5: PHP / Part 6: PHP /
    Appendix

    10-11-12

    View Slide

  8. ύʔϑΣΫτPHPͱࢲ
    PHP 2
    1 PHP
    1
    PHP SQL
    MY ( )

    View Slide

  9. ύʔϑΣΫτPHPͱΈͳ͞Μ
    ( )
    PHP
    PHP
    1,2

    View Slide

  10. ύʔϑΣΫτPHPͱΈͳ͞Μ
    https://twitter.com/search?q= PHP
    https://qiita.com/search?q=" PHP"
    https://jp.mercari.com/search?keyword="
    PHP"

    View Slide

  11. ԿΑΓʮFWΛ࡞Δʯؚ͕·Ε͍ͯΔͷ͕(΋)ྑ͍
    Part-1: PHP overview / Part 2: PHP / Part
    3: Web / Part 4: PHP
    / Part5: PHP / Part 6: PHP /
    Appendix

    ⏳estimate: 2 /40

    View Slide

  12. PHP |
    http://blog.asial.co.jp/771
    1

    View Slide

  13. PHP |
    http://blog.asial.co.jp/771
    1

    View Slide

  14. ;Γ͔͑Δ: ύʔϑΣΫτPHP͸ԿΛ͘Εͨͷ͔
    FW FW
    IT
    1

    ⏳estimate: 3 /40

    View Slide

  15. PHP

    View Slide

  16. ྩ࿨5೥ʹ࠶௅ઓͯ͠ΈΔ
    :
    10
    :
    PHP PHP

    View Slide

  17. ͓͠ͳ͕͖
    1. PHP Part3 FW
    2. 22 5 PHP
    3.
    FW
    4.

    View Slide

  18. §1 FW
    - PHP Part3 -

    View Slide

  19. ୊ࡐ: ϛχϒϩά
    1.
    2.
    3.
    4.

    ⏳estimate: 5 /40

    View Slide

  20. demo

    View Slide

  21. શମతͳઃܭ
    MVC
    URL


    ⏳estimate: 6 /40

    View Slide


  22. View Slide

  23. ϑϩϯτίϯτϩʔϥʔ(index.php)

    View Slide

  24. ϧʔςΟϯά(Application)
    Application

    View Slide

  25. ΞΫγϣϯͷσΟεύον(Application)
    Application ControllerAction

    ⏳estimate: 7.5 /40

    View Slide

  26. ΞΫγϣϯͷσΟεύονᶄ(Application)

    Response

    View Slide

  27. ΞΫγϣϯ(Controller)
    Request
    Model
    View

    View Slide

  28. ϦΫΤετͷѻ͍
    Request Session
    $_GET $_SESSION

    View Slide

  29. DBΞΫηε(DbManager, Repository)
    Repository
    Controller
    SQL RDB
    DbManager
    PDO
    Repository

    ⏳estimate: 9.5 /40

    View Slide

  30. ίϯςϯπͷඳը(View)
    View

    View Slide

  31. αʔόʔฦ౴(Response)
    Response
    header()
    echo

    View Slide

  32. ૯ׅ
    MVC


    ⏳estimate: 11 /40

    View Slide

  33. §2 PHP
    - 22 5 PHP -

    View Slide

  34. ࣥච͞Εͨ౰࣌ͱࠓ͸ɺͲΜͳҧ͍͕͋Δͷ͔
    FW MVC
    FW

    ⏳estimate: 11.5 /40

    View Slide

  35. View Slide

  36. View Slide


  37. 2010 PHP
    ⏳estimate: 12.5 /40



    View Slide


  38. PSR-0 PHP6



    View Slide


  39. namespace

    Standard Group



    View Slide



  40. Rails FW

    GitHub



    View Slide


  41. 2010 HipHop

    Composer+Packagist



    View Slide


  42. CI 2011
    ⏳estimate: 14 /40



    View Slide

  43. https://www.thoughtworks.com/content/dam/thoughtworks/documents/radar/
    2011/07/tr_technology_radar_vol_5_en.pdf

    View Slide


  44. Twelve-Factor App



    View Slide


  45. 3 PHP5

    Facebook Hack



    View Slide


  46. PHP7

    2 Phan PHPStan
    ⏳estimate: 15.5 /40



    View Slide

  47. ( )

    View Slide

  48. 1. Composerͷొ৔ɾσϑΝΫτԽ
    PSR-0/4

    View Slide

  49. 2. ݎ࿚ͳίʔυ΁ͷཉٻ
    Hack
    PHP7( ) PHP8( )

    ⏳estimate: 16.5 /40

    View Slide

  50. 3. FWʹΑΔ”ࢧ഑”͔Βͷ཭൓ʁ
    10 Web
    ( )
    DB

    ⏳estimate: 17.5 /40

    View Slide

  51. §3 FW
    - 10 -

    View Slide


  52. FW

    ⏳estimate: 19.5 /40

    View Slide

  53. جຊํ਑
    FW
    (ORM View( etc)


    View Slide

  54. ந৅ʹΑΔઃܭ: ґଘੑͷ؅ཧ
    FW
    DI

    ⏳estimate: 20.5 /40

    View Slide

  55. γϯϓϦγςΟ: খ͞ͳ໾ׂΛ૊Έ߹ΘͤΔ
    CI/
    MVC
    Middleware Single Action(Controller)

    View Slide

  56. ڻ͖Λ཈͑Δ࣮૷: ෆมੑɺܕݕࠪ
    (= )

    View Slide

  57. ૬ޓӡ༻ੑ: PSRͷॏࢹ
    FW
    PSR

    ⏳estimate: 23.5 /40

    View Slide

  58. §4 FW
    - -

    View Slide

  59. ⏳estimate: 24 /40

    View Slide

  60. View Slide

  61. ΍Δ͜ͱ
    FW

    FW
    : https://github.com/o0h/phperkaigi-2023
    Zenn

    View Slide

  62. ΍Βͳ͍͜ͱ
    FW
    ( Logger Cache )

    View Slide

  63. σΟϨΫτϦߏ੒ʹ͍ͭͯ
    FW

    ⏳estimate: 26.5 /40

    View Slide

  64. FWίʔυͷґଘύοέʔδ
    FW
    PSR
    11: Container
    17: HTTP Factory
    7: HTTP Message
    15: HTTP Server
    Request Handlers

    View Slide

  65. appίʔυͷґଘύοέʔδ
    FW repositories
    Composer

    ⏳estimate: 28.5 /40

    View Slide

  66. Applicationͷ੹຿
    Application

    View Slide

  67. ϛυϧ΢ΣΞϋϯυϥʔͷ࣮૷

    View Slide


  68. View Slide

  69. Emitterͷ࣮૷
    ( )Application
    PSR-7
    Emitter HTTP

    ⏳estimate: 29.5 /40

    View Slide


  70. ύʔϑΣΫτPHPͷॲཧ

    (ResponseΫϥε)

    View Slide


  71. PSR-7ResponseΛ࢖͏ॲཧ

    View Slide

  72. ϛυϧ΢ΣΞͷ࣮૷
    PSR-15 Middleware Interface

    ⏳estimate: 30.5 /40

    View Slide


  73. PSR-7ͷServerRequestʹ͸ແ͍

    Session৘ใΛ෇༩͢Δ

    (͘͢͝؆ૉͳ)Middlewareͷ࣮૷ྫ

    View Slide

  74. ϧʔςΟϯάͷมߋ
    URL
    1

    ⏳estimate: 31.5 /40

    View Slide


  75. ύʔϑΣΫτPHPͷॲཧ

    (ApplicationαϒΫϥε)

    View Slide


  76. ActionΛىಈͤ͞ΔϧʔςΟϯά

    (routes.php)

    View Slide

  77. Actionͷ੹຿
    Action
    (PSR-7)
    (PSR-7)

    ⏳estimate: 32 /40

    View Slide

  78. Actionͷ࢓ࣄʹඞཁͳґଘͷղܾ
    Action RoutingMiddleware

    DI Action
    PSR-11 DI
    DI PSR-11
    (=get(), has())

    View Slide


  79. ਌Ϋϥεʹɺ

    શͯͷActionͰڞ௨ͷॲཧΛهड़͠·͢

    View Slide


  80. ࢠΫϥεݻ༗ͷॲཧ͸ɺ

    `depends()`ͱ͍͏ϝιουΛ༻ҙͯ͠

    ґଘΛهड़Ͱ͖ΔΑ͏ʹ͠·ͨ͠

    View Slide


  81. depends()͸ɺ୯ͳΔηολʔͰ͢

    ࿈૝഑ྻͷల։(໊લ͖Ҿ਺)Λར༻͍ͯ͠·͢

    View Slide

  82. :

    Action

    Attribute

    View Slide

  83. Τϥʔϋϯυϥʔͷ࣮૷
    1

    try-catch
    PSR-15 Speci
    fi
    cation RECOMMENDED

    ⏳estimate: 34 /40

    View Slide


  84. ྫ֎Λัଊͯ͠ɺ

    ࣗ਎ͰResponseΛ૊Έཱͯͯฦ͔͢

    `ErrorAction`ʹॲཧΛ౉͢

    View Slide

  85. ͦͷଞʹ཈͓͖͍͑ͯͨϙΠϯτ
    (
    )
    PSR-7/PSR-17
    PSR-11 DI
    PSR-4 Autoloader

    ⏳estimate: 34 /40

    View Slide

  86. ͦͷଞʹ཈͓͖͍͑ͯͨϙΠϯτ
    PHP CSRF
    : Laravel/CakePHP/Slim
    CSRF

    View Slide

  87. ͦͷଞʹ཈͓͖͍͑ͯͨϙΠϯτ
    psr/***-implementation
    https://github.com/middlewares/psr15-middlewares

    View Slide

  88. View Slide

  89. ࠓճ΍Γ͔ͨͬͨ͜ͱɺͲ͏Ͱͨ͠ʁ
    PHP 10
    MVC
    Composer PSR DI
    /TDD
    PSR

    ⏳estimate: 37 /40

    View Slide

  90. ࠓճ΍Γ͔ͨͬͨ͜ͱɺͲ͏Ͱͨ͠ʁ
    FW
    PHP

    View Slide

  91. Zenn΋ॻ͜͏ͱͯ͠Δɾɾɾ
    ( )

    View Slide

  92. ͓͠·͍ʂ
    ͓෇͖߹͍͍͖ͨͩ

    ͋Γ͕ͱ͏͍͟͝·ͨ͠

    View Slide

  93. §X Appendix

    View Slide

  94. ίϛϡχςΟʹ஝ੵ͞Ε͍ͯΔ஌ݟ
    https://daisuki.nichiyoubi.land/entry/2023/03/11/221306

    View Slide

  95. ૬ޓӡ༻ੑɺඪ४ͷେࣄ͞
    PSR
    
 

    sizuhiko

    https://speakerdeck.com/sizuhiko/phpcon-fukuoka-2019

    View Slide

  96. PSR-7
    PSR-7

    sasezaki

    https://www.slideshare.net/sasezaki/httpphp

    View Slide

  97. PSR-7Λத৺ͱͯ͠PSR HTTPγϦʔζ
    PSR-7


    https://speakerdeck.com/tanakahisateru/17ninatutafalseka

    View Slide

  98. PSR-15/ϛυϧ΢ΣΞͷ۩ମɾ࣮૷


    https://tadsan.fanbox.cc/posts/3674121
    https://speakerdeck.com/n1215/psr-15-request-
    handlerkarali-jie-surumiddlewarefalseshi-zu-mi

    View Slide

  99. DI / DIίϯςφ
    DI DI

    PHPerKaigi2021


    https://speakerdeck.com/rukiadia/understand-
    dependency-injection-of-php
    https://speakerdeck.com/hiro_y/php-di-with-
    attributes

    View Slide

  100. DIίϯςφͷ۩ମɾ࣮૷
    DI

    2021

    https://tadsan.fanbox.cc/posts/2061773

    View Slide

  101. FW޿ൣ

    FW

    PHPerKaigi2018

    https://www.youtube.com/watch?v=mW4a2BKM3Kg

    View Slide