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
330
LTってなんなん?
nibuno
0
110
【初心者向け】ググらずに!? ターミナル上で Pythonオブジェクトを調べよう
nibuno
0
470
勇気出してアウトプットしたらコメントをもらえて自分の理解が深まった良い話🤩
nibuno
0
170
テスト駆動開発のススメ
nibuno
2
21k
目標を決めるにあたって 新年の抱負 超LT会- vol.2
nibuno
0
360
Other Decks in Programming
See All in Programming
Outline View in SwiftUI
1024jp
1
260
カラム追加で増えるActiveRecordのメモリサイズ イメージできますか?
asayamakk
4
1.9k
「今のプロジェクトいろいろ大変なんですよ、app/services とかもあって……」/After Kaigi on Rails 2024 LT Night
junk0612
2
570
GCCのプラグインを作る / I Made a GCC Plugin
shouth
1
150
Amazon Qを使ってIaCを触ろう!
maruto
0
350
讓數據說話:用 Python、Prometheus 和 Grafana 講故事
eddie
0
380
PHP でアセンブリ言語のように書く技術
memory1994
PRO
1
160
Importmapを使ったJavaScriptの 読み込みとブラウザアドオンの影響
swamp09
4
1.3k
約9000個の自動テストの 時間を50分->10分に短縮 Flakyテストを1%以下に抑えた話
hatsu38
24
12k
Compose 1.7のTextFieldはPOBox Plusで日本語変換できない
tomoya0x00
0
160
AWS IaCの注目アップデート 2024年10月版
konokenj
3
3.2k
Why Jakarta EE Matters to Spring - and Vice Versa
ivargrimstad
0
470
Featured
See All Featured
YesSQL, Process and Tooling at Scale
rocio
168
14k
Intergalactic Javascript Robots from Outer Space
tanoku
268
27k
How GitHub (no longer) Works
holman
310
140k
Visualization
eitanlees
145
15k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
42
2.2k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
229
52k
VelocityConf: Rendering Performance Case Studies
addyosmani
325
24k
The Language of Interfaces
destraynor
154
24k
Music & Morning Musume
bryan
46
6.2k
Agile that works and the tools we love
rasmusluckow
327
21k
Stop Working from a Prison Cell
hatefulcrawdad
267
20k
Facilitating Awesome Meetings
lara
49
6.1k
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. ͝੩ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠