Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
パーフェクトPHPのススメ
Search
Yumihiki
October 30, 2019
Programming
1
1k
パーフェクトPHPのススメ
Web×PHP TechCafe 10月 @ RAKUS のLT資料です。
Yumihiki
October 30, 2019
Tweet
Share
More Decks by Yumihiki
See All by Yumihiki
pathlibのススメ
nibuno
0
43
ノリと勢いで勉強会を共同主催しはじめた話
nibuno
1
340
LTってなんなん?
nibuno
0
120
【初心者向け】ググらずに!? ターミナル上で Pythonオブジェクトを調べよう
nibuno
0
470
勇気出してアウトプットしたらコメントをもらえて自分の理解が深まった良い話🤩
nibuno
0
170
テスト駆動開発のススメ
nibuno
2
21k
目標を決めるにあたって 新年の抱負 超LT会- vol.2
nibuno
0
370
Other Decks in Programming
See All in Programming
useSyncExternalStoreを使いまくる
ssssota
6
1k
PHPで学ぶプログラミングの教訓 / Lessons in Programming Learned through PHP
nrslib
2
230
良いユニットテストを書こう
mototakatsu
7
2.2k
talk-with-local-llm-with-web-streams-api
kbaba1001
0
180
PHPで作るWebSocketサーバー ~リアクティブなアプリケーションを知るために~ / WebSocket Server in PHP - To know reactive applications
seike460
PRO
2
300
モバイルアプリにおける自動テストの導入戦略
ostk0069
0
110
快速入門可觀測性
blueswen
0
350
テストコードのガイドライン 〜作成から運用まで〜
riku929hr
3
390
Keeping it Ruby: Why Your Product Needs a Ruby SDK - RubyWorld 2024
envek
0
190
Spatial Rendering for Apple Vision Pro
warrenm
0
100
Haze - Real time background blurring
chrisbanes
1
510
menu基盤チームによるGoogle Cloudの活用事例~Application Integration, Cloud Tasks編~
yoshifumi_ishikura
0
110
Featured
See All Featured
The Cost Of JavaScript in 2023
addyosmani
45
7k
Measuring & Analyzing Core Web Vitals
bluesmoon
4
170
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
44
9.3k
How GitHub (no longer) Works
holman
311
140k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
226
22k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
28
4.4k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
132
33k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
191
16k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
26
1.9k
Making Projects Easy
brettharned
116
5.9k
Why You Should Never Use an ORM
jnunemaker
PRO
54
9.1k
Agile that works and the tools we love
rasmusluckow
328
21k
Transcript
ύʔϑΣΫτ1)1ͷεεϝ :VNJIJLJ 8FCº1)15FDI$BGF݄ˏ3",64
ࣗݾհ :VNJIJLJʢΏΈͻ͖ʣ 1)1FSͰ͢ υϥΰϯΫΤετΥʔΫͷ Γ͗͢ͰΛ௧Ί·ͨ͠ ٷಓՈٷҾ͖ɹ͕༝དྷͰ͢
ύʔϑΣΫτ1)1͍͍ͧ
ηΫγʔͳ1)1FSʹ ͳΔͨΊʹඞಡͷҰ ύʔϑΣΫτ
ύʔϑΣΫτ1)1ͱ Ͱݴޠ༷͔Β࠷৽ͷٕज़·ͰΛཏͨ͠༰ɻ ཏతʹղઆ͞Ε͍ͯΔ͚ͩͰͳ͘ɼ֤ٕज़ʹؔͯ͠جຊ͔Β͔ͬ͠Γղઆ͠ɼ ϑϨʔϜϫʔΫͳͲΛར༻ͨ͠8FCΞϓϦέʔγϣϯ։ൃͷղઆͳͲɼ ෦ॲཧ͕ཪͰԿΛ͍ͯ͠Δͷ͔Λ۷ΓԼ͛ͯղઆͯ͋͠ΔͨΊɼ 1)1Λମܥతʹֶͼ͍ͨํͪΖΜɼ ΑΓਂ͍ࣝΛಘ͍ͨதʙ্ڃऀʹ͓קΊͷҰͰ͋Δɻ IUUQTHJIZPKQCPPL͜ͷຊͷ֓ཁΑΓ
ϑϨʔϜϫʔΫΛ࡞ͬͯ 8FCΞϓϦέʔγϣϯΛ ։ൃ͠·͢
࣮ࡍʹֶशͯ͠Έͯ
#FGPSF ͦͦΦϒδΣΫτࢦͬͯԿʁɹඒຯ͍͠ͷʁ UIJT QVCMJD JOUFSGBDF TFMG ʜ֮͑Δ୯ޠଟ͘ͳ͍ʁ ϑϨʔϜϫʔΫதͰԿͯ͠ΔΜ͔ ਖ਼Θ͔Βͳ͍ɾɾɾ
"GUFS ΦϒδΣΫτࢦͱ ϑϨʔϜϫʔΫͷΈ શʹཧղͨ͠
࣮ࡍʹϑϨʔϜϫʔΫΛར༻ͯ͠ ࡞͢Δ8FCΞϓϦέʔγϣϯ ͜Μͳײ͡Ͱ͢ʢࠓ͔Βө͠·͢ʣ
ϑϨʔϜϫʔΫʹ͍ͭͯ গ͠ղઆΛߦ͍͖ͬͯ·͢
ύʔϑΣΫτ̥̝̥Ͱ࡞Δ ϑϨʔϜϫʔΫʹ͍ͭͯ
ϑϨʔϜϫʔΫͷཁ݅ • MVCϞσϧʹΑΔׂͷ • σʔλϕʔεͷଓཧ • ϩάΠϯঢ়ଶͷཧ • URLͱཧతͳσΟϨΫτϦߏͱΛΓ͢ϧʔςΟϯάػೳ •
CSRFରࡦ
ϑϨʔϜϫʔΫͷ ߏɾॲཧͷྲྀΕ
3FRVFTU (&51045 ύϥϝʔλɺ63- ͷཧ "QQMJDBUJPO 3PVUFS 63-Λड͚औΓ ݺͼग़͢ ίϯτϩʔϥΛࢦఆ $POUSPMMFS
ϞσϧϏϡʔͷ ੍ޚΛߦ͏ ΞΫγϣϯΛఆٛ 3FTQPOTF ϦΫΤετʹର͠ ࠷ऴతʹϢʔβ ฦ͢ใΛཧ %C.BOBHFS σʔλϕʔεͷଓ ใ%C3FQPTJUPSZ ͷཧ %C3FQPTJUPSZ ΞΫηεΛ͏ॲཧΛ ཧɻϞσϧʹ૬ 4FTTJPO ηογϣϯ Λཧ͢Δ 7JFX දࣔΛ੍ޚ͢Δɻ ϑΝΠϧͷಡΈࠐΈ ड͚͠Λߦ͏ ύʔϑΣΫτ1)1 ϖʔδΑΓ ͜ͷҰ࿈ͷྲྀΕΛ ੍ޚ͢ΔΫϥε ࠷ॳ͔͜͜Βʂ ࠷ޙʹใΛग़ྗʂ
͜͏͍͏෦తͳ ॲཧ͕͋Δͷ͔ͱ ษڧʹͳͬͨ͜ͱ
৭ʑ͋Γ·͢
ྫ͑
ΫϥεͱΦʔτϩʔυ
ΫϥεͱΦʔτϩʔυ ΦʔτϩʔυΛઃఆ͢Δ͜ͱͰΫϥεΛݺͼग़ͨ͠ࡍʹ ͦͷΫϥε͕PHP্ʹಡΈࠐ·Ε͍ͯͳ͍߹ɺ ࣗಈతʹϑΝΠϧͷಡΈࠐΈΛߦ͏͜ͱ͕Ͱ͖ΔΑ͏ʹͳΔɻ ຖճಡΈࠐΈॲཧΛॻ͔ͳͯ͘ྑ͍
Ͳ͏͍ͬͯΔͷʁ
ClassLoader.phpͱ bootstrap.php
ClassLoader.php
ClassLoader.php spl_autoload_register()ϝιουͰ ઃఆͨ͠ίʔϧόοΫؔΛΦʔτϩʔυ࣌ʹݺͼग़ͤΔ
ClassLoader.php σΟϨΫτϦͷొΛߦ͏
ClassLoader.php Φʔτϩʔυ࣌ʹPHP͔Βࣗಈతʹݺͼग़͞Ε ΫϥεϑΝΠϧͷಡΈࠐΈΛߦ͏
ClassLoader.php $dirsϓϩύςΟʹઃఆ͞ΕͨσΟϨΫτϦ͔Β ʮΫϥε໊.phpʯΛ୳͠ݟ͔ͭͬͨ߹ʹrequireͰಡΈ͜Ή
bootstrap.php ClassLoaderΛੜ͠ɺcoreɺmodelσΟϨΫτϦΛ ΦʔτϩʔυͷରσΟϨΫτϦʹઃఆ͠ɺ register()ϝιουͰΦʔτϩʔυʹొ
bootstrap.php ͦͯ͠ɺbootstrap.phpΛಡΈࠐΉͱ Φʔτϩʔυ͕ઃఆ͞Ε·͢
͜ͷΑ͏ͳॲཧͰ ΦʔτϩʔυΛ࣮ ͍ͯ͠·ͨ͠ ศརͰ͢Ͷ
͜͏͍͏෦తͳ ॲཧ͕͋Δͷ͔ͱ ษڧʹͳͬͨ͜ͱ Part2
࣌ؒͷ߹্ࡉ͔͘ ͤͦ͏ʹ͋Γ·ͤΜʜ
গ͠ૣޱͰ ͱͯͬ͘͟Γͱ
ApplicationΫϥεͷ࣮ ίϯτϩʔϥͷݺͼग़͠ ϩάΠϯ੍ޚͳͲ
ଟͷ෦తͳॲཧΛ هड़͠ɺಈ͖ΛΔ ͜ͱ͕Ͱ͖·͢
ࠓͨ͠༰ ύʔϑΣΫτPHPͷ ΄ΜͷҰ෦͚ͩͰ͢
ͥͻҰ ύʔϑΣΫτPHPΛ ಡΜͰΈ͍ͯͩ͘͞
FIN. ͝੩ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠