PHPerKaigi 2023の発表資料です https://fortee.jp/phperkaigi-2023/proposal/db787adc-c855-4114-99b6-8c6958d47b42
参考文献・動画を、別途ブログ記事として記載しているのでそちらもぜひご覧ください https://daisuki.nichiyoubi.land/entry/2023/03/11/221306
PHPPart35PHPerKaigi 2023Hideki KinjyoGitHub: o0h / Twitter: @o0h_ [ൃද൛]
View Slide
ࣗݾհ/GitHub: @o0h / Twitter: @o0h_FW CakePHP
⾠ΊͬͪΌग़ͯ͘Δ͚Ͳઆ໌͠ͳ͍֓೦DIPSR PHP-FIGPSR-7/15/17, PSR-11=>
༧Ίݴ͓ͬͯ͘͜ͱ ( )https://speakerdeck.com/o0h/phperkaigi-2023
PHPHP https://gihyo.jp/book/2010/978-4-7741-4437-5
ॻ੶ͷجຊใ2010 11 12Part-1: PHP overview / Part 2: PHP / Part 3:Web / Part 4: PHP /Part5: PHP / Part 6: PHP /Appendix10-11-12
ύʔϑΣΫτPHPͱࢲPHP 21 PHP1PHP SQLMY ( )
ύʔϑΣΫτPHPͱΈͳ͞Μ( )PHPPHP1,2
ύʔϑΣΫτPHPͱΈͳ͞Μhttps://twitter.com/search?q= PHPhttps://qiita.com/search?q=" PHP"https://jp.mercari.com/search?keyword="PHP"
ԿΑΓʮFWΛ࡞Δʯؚ͕·Ε͍ͯΔͷ͕()ྑ͍Part-1: PHP overview / Part 2: PHP / Part3: Web / Part 4: PHP/ Part5: PHP / Part 6: PHP /Appendix⏳estimate: 2 /40
PHP |http://blog.asial.co.jp/7711
;Γ͔͑Δ: ύʔϑΣΫτPHPԿΛ͘Εͨͷ͔FW FWIT1⏳estimate: 3 /40
PHP
ྩ5ʹ࠶ઓͯ͠ΈΔ:10:PHP PHP
͓͠ͳ͕͖1. PHP Part3 FW2. 22 5 PHP3.FW4.
§1 FW- PHP Part3 -
ࡐ: ϛχϒϩά1.2.3.4.⏳estimate: 5 /40
demo
શମతͳઃܭMVCURL ⏳estimate: 6 /40
ϑϩϯτίϯτϩʔϥʔ(index.php)
ϧʔςΟϯά(Application)Application
ΞΫγϣϯͷσΟεύον(Application)Application ControllerAction⏳estimate: 7.5 /40
ΞΫγϣϯͷσΟεύονᶄ(Application) Response
ΞΫγϣϯ(Controller)RequestModelView
ϦΫΤετͷѻ͍Request Session$_GET $_SESSION
DBΞΫηε(DbManager, Repository)RepositoryControllerSQL RDBDbManagerPDORepository⏳estimate: 9.5 /40
ίϯςϯπͷඳը(View)View
αʔόʔฦ(Response)Responseheader()echo
૯ׅMVC ⏳estimate: 11 /40
§2 PHP- 22 5 PHP -
ࣥච͞Εͨ࣌ͱࠓɺͲΜͳҧ͍͕͋Δͷ͔FW MVCFW⏳estimate: 11.5 /40
2010 PHP⏳estimate: 12.5 /40
PSR-0 PHP6
namespace Standard Group
Rails FW GitHub
2010 HipHop Composer+Packagist
CI 2011⏳estimate: 14 /40
https://www.thoughtworks.com/content/dam/thoughtworks/documents/radar/2011/07/tr_technology_radar_vol_5_en.pdf
Twelve-Factor App
3 PHP5 Facebook Hack
PHP7 2 Phan PHPStan⏳estimate: 15.5 /40
( )
1. ComposerͷొɾσϑΝΫτԽPSR-0/4
2. ݎ࿚ͳίʔυͷཉٻHackPHP7( ) PHP8( )⏳estimate: 16.5 /40
3. FWʹΑΔ”ࢧ”͔Βͷʁ10 Web( )DB⏳estimate: 17.5 /40
§3 FW- 10 -
FW ⏳estimate: 19.5 /40
جຊํFW(ORM View( etc)美
நʹΑΔઃܭ: ґଘੑͷཧFWDI⏳estimate: 20.5 /40
γϯϓϦγςΟ: খ͞ͳׂΛΈ߹ΘͤΔCI/MVCMiddleware Single Action(Controller)
ڻ͖Λ͑Δ࣮: ෆมੑɺܕݕࠪ(= )
૬ޓӡ༻ੑ: PSRͷॏࢹFWPSR⏳estimate: 23.5 /40
§4 FW- -
⏳estimate: 24 /40
Δ͜ͱFW FW: https://github.com/o0h/phperkaigi-2023Zenn
Βͳ͍͜ͱFW( Logger Cache )
σΟϨΫτϦߏʹ͍ͭͯFW⏳estimate: 26.5 /40
FWίʔυͷґଘύοέʔδFWPSR11: Container17: HTTP Factory7: HTTP Message15: HTTP ServerRequest Handlers
appίʔυͷґଘύοέʔδFW repositoriesComposer⏳estimate: 28.5 /40
ApplicationͷApplication
ϛυϧΣΞϋϯυϥʔͷ࣮
Emitterͷ࣮( )ApplicationPSR-7Emitter HTTP⏳estimate: 29.5 /40
ύʔϑΣΫτPHPͷॲཧ (ResponseΫϥε)
PSR-7ResponseΛ͏ॲཧ
ϛυϧΣΞͷ࣮PSR-15 Middleware Interface⏳estimate: 30.5 /40
PSR-7ͷServerRequestʹແ͍ SessionใΛ༩͢Δ (͘͢͝؆ૉͳ)Middlewareͷ࣮ྫ
ϧʔςΟϯάͷมߋURL1⏳estimate: 31.5 /40
ύʔϑΣΫτPHPͷॲཧ (ApplicationαϒΫϥε)
ActionΛىಈͤ͞ΔϧʔςΟϯά (routes.php)
ActionͷAction(PSR-7)(PSR-7)⏳estimate: 32 /40
ActionͷࣄʹඞཁͳґଘͷղܾAction RoutingMiddleware DI ActionPSR-11 DIDI PSR-11(=get(), has())
Ϋϥεʹɺ શͯͷActionͰڞ௨ͷॲཧΛهड़͠·͢
ࢠΫϥεݻ༗ͷॲཧɺ `depends()`ͱ͍͏ϝιουΛ༻ҙͯ͠ ґଘΛهड़Ͱ͖ΔΑ͏ʹ͠·ͨ͠
depends()ɺ୯ͳΔηολʔͰ͢ ࿈ྻͷల։(໊લ͖Ҿ)Λར༻͍ͯ͠·͢
: Action Attribute
Τϥʔϋϯυϥʔͷ࣮1 try-catchPSR-15 Specification RECOMMENDED⏳estimate: 34 /40
ྫ֎Λัଊͯ͠ɺ ࣗͰResponseΛΈཱͯͯฦ͔͢ `ErrorAction`ʹॲཧΛ͢
ͦͷଞʹ͓͖͍͑ͯͨϙΠϯτ()PSR-7/PSR-17PSR-11 DIPSR-4 Autoloader⏳estimate: 34 /40
ͦͷଞʹ͓͖͍͑ͯͨϙΠϯτPHP CSRF: Laravel/CakePHP/SlimCSRF
ͦͷଞʹ͓͖͍͑ͯͨϙΠϯτpsr/***-implementationhttps://github.com/middlewares/psr15-middlewares
ࠓճΓ͔ͨͬͨ͜ͱɺͲ͏Ͱͨ͠ʁPHP 10MVCComposer PSR DI/TDDPSR⏳estimate: 37 /40
ࠓճΓ͔ͨͬͨ͜ͱɺͲ͏Ͱͨ͠ʁFWPHP
Zennॻ͜͏ͱͯ͠Δɾɾɾ( )
͓͠·͍ʂ͓͖߹͍͍͖ͨͩ ͋Γ͕ͱ͏͍͟͝·ͨ͠
§X Appendix
ίϛϡχςΟʹੵ͞Ε͍ͯΔݟhttps://daisuki.nichiyoubi.land/entry/2023/03/11/221306
૬ޓӡ༻ੑɺඪ४ͷେࣄ͞PSR sizuhikohttps://speakerdeck.com/sizuhiko/phpcon-fukuoka-2019
PSR-7PSR-7 sasezakihttps://www.slideshare.net/sasezaki/httpphp
PSR-7Λத৺ͱͯ͠PSR HTTPγϦʔζPSR-7 https://speakerdeck.com/tanakahisateru/17ninatutafalseka
PSR-15/ϛυϧΣΞͷ۩ମɾ࣮ https://tadsan.fanbox.cc/posts/3674121https://speakerdeck.com/n1215/psr-15-request-handlerkarali-jie-surumiddlewarefalseshi-zu-mi
DI / DIίϯςφDI DI PHPerKaigi2021 https://speakerdeck.com/rukiadia/understand-dependency-injection-of-phphttps://speakerdeck.com/hiro_y/php-di-with-attributes
DIίϯςφͷ۩ମɾ࣮DI 2021https://tadsan.fanbox.cc/posts/2061773
FWൣ FW PHPerKaigi2018https://www.youtube.com/watch?v=mW4a2BKM3Kg