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
350
LTってなんなん?
nibuno
0
120
【初心者向け】ググらずに!? ターミナル上で Pythonオブジェクトを調べよう
nibuno
0
480
勇気出してアウトプットしたらコメントをもらえて自分の理解が深まった良い話🤩
nibuno
0
180
テスト駆動開発のススメ
nibuno
2
21k
目標を決めるにあたって 新年の抱負 超LT会- vol.2
nibuno
0
370
Other Decks in Programming
See All in Programming
どうして手を動かすよりもチーム内のコードレビューを優先するべきなのか
okashoi
3
870
サーバーゆる勉強会 DBMS の仕組み編
kj455
1
300
CQRS+ES の力を使って効果を感じる / Feel the effects of using the power of CQRS+ES
seike460
PRO
0
240
HTML/CSS超絶浅い説明
yuki0329
0
190
ある日突然あなたが管理しているサーバーにDDoSが来たらどうなるでしょう?知ってるようで何も知らなかったDDoS攻撃と対策 #phpcon.2024
akase244
2
7.7k
Stackless и stackful? Корутины и асинхронность в Go
lamodatech
0
1.3k
ゼロからの、レトロゲームエンジンの作り方
tokujiros
3
1k
「とりあえず動く」コードはよい、「読みやすい」コードはもっとよい / Code that 'just works' is good, but code that is 'readable' is even better.
mkmk884
6
1.4k
PHPUnitしか使ってこなかった 一般PHPerがPestに乗り換えた実録
mashirou1234
0
420
shadcn/uiを使ってReactでの開発を加速させよう!
lef237
0
300
アクターシステムに頼らずEvent Sourcingする方法について
j5ik2o
6
700
PSR-15 はあなたのための ものではない? - phpcon2024
myamagishi
0
400
Featured
See All Featured
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
28
4.5k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
127
18k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
7
570
Stop Working from a Prison Cell
hatefulcrawdad
267
20k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
26
1.9k
A better future with KSS
kneath
238
17k
We Have a Design System, Now What?
morganepeng
51
7.3k
Keith and Marios Guide to Fast Websites
keithpitt
410
22k
The World Runs on Bad Software
bkeepers
PRO
66
11k
For a Future-Friendly Web
brad_frost
176
9.5k
Music & Morning Musume
bryan
46
6.3k
Fantastic passwords and where to find them - at NoRuKo
philnash
50
2.9k
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. ͝੩ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠