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でURLルーティングを自作する
Search
bmf_san
June 29, 2019
Programming
1
2.8k
PHPでURLルーティングを自作する
bmf_san
June 29, 2019
Tweet
Share
More Decks by bmf_san
See All by bmf_san
契約テストとPactについて
bmf_san
0
48
5分でわかるSLO
bmf_san
2
68
権限について考える
bmf_san
2
76
自作HTTPルーターから新しいServeMuxへ
bmf_san
3
1.6k
古くなってしまったPHPフレームワークとPHPのバージョンアップ戦略
bmf_san
1
300
アジャイルワークショップ
bmf_san
0
110
Makuakeの認証基盤とRe-Architectureチーム
bmf_san
0
2.4k
天下一HTTPRouter武闘会.pdf
bmf_san
8
4.3k
ゆっくりHackerRank
bmf_san
0
120
Other Decks in Programming
See All in Programming
[JAWS-UG横浜 #80] うわっ…今年のServerless アップデート、少なすぎ…?
maroon1st
0
100
Androidアプリのモジュール分割における:x:commonを考える
okuzawats
1
280
快速入門可觀測性
blueswen
0
500
PHPとAPI Platformで作る本格的なWeb APIアプリケーション(入門編) / phpcon 2024 Intro to API Platform
ttskch
0
390
テストコード書いてみませんか?
onopon
2
340
QA環境で誰でも自由自在に現在時刻を操って検証できるようにした話
kalibora
1
140
ATDDで素早く安定した デリバリを実現しよう!
tonnsama
1
1.9k
Оптимизируем производительность блока Казначейство
lamodatech
0
950
ErdMap: Thinking about a map for Rails applications
makicamel
1
660
EC2からECSへ 念願のコンテナ移行と巨大レガシーPHPアプリケーションの再構築
sumiyae
3
590
ISUCON14感想戦で85万点まで頑張ってみた
ponyo877
1
590
Simple組み合わせ村から大都会Railsにやってきた俺は / Coming to Rails from the Simple
moznion
3
2.2k
Featured
See All Featured
Testing 201, or: Great Expectations
jmmastey
41
7.2k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
230
52k
Speed Design
sergeychernyshev
25
740
BBQ
matthewcrist
85
9.4k
The Cost Of JavaScript in 2023
addyosmani
46
7.2k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
30
2.1k
Thoughts on Productivity
jonyablonski
68
4.4k
Building an army of robots
kneath
302
45k
How GitHub (no longer) Works
holman
312
140k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
3.6k
Faster Mobile Websites
deanohume
305
30k
Fontdeck: Realign not Redesign
paulrobertlloyd
82
5.3k
Transcript
PHPͰURLϧʔςΟϯάΛࣗ࡞͢Δ @bmf_san @PHP Conference Fukuoka 2019 2019/06/29
@bmf_san bmf-san bmf-tech.com Twitter Github Blog
֓ཁ 1. ಈػ • ϧʔςΟϯάΛࣗ࡞͠Α͏ͱࢥ͖͔͚ͬͨͬ 2. Ͳ͏࡞͔ͬͨʁ • ࣮աఔʹ͍ͭͯ 3.
·ͱΊ
1 ಈػ
ಈػ • ݩʑGolangͰ࣮͍ͨ͠ͱߟ͍͑ͯͨ • ͱΓ͋͑ͣ׳Ε͍ͯΔPHP͔Βɾɾ • ͳΜ͔ࣗ࡞ͯ͠ΈͨΒ໘നͦ͏ʢখฒײʣ
2 Ͳ͏࡞͔ͬͨʁ
࣮ࡍʹ࡞ͬͨͷ
ιʔε • Github • bmf-san/ahi-router • https://github.com/bmf-san/ahi-router
ϧʔςΟϯάΛఆٛ͢Δ ୳ࡧ݁ՌΛಘΔ ࠓճ࣮ͨ͠3PVUFSύοέʔδ
ΞΫγϣϯͱύεύϥϝʔλ͕औಘͰ͖Δ
ύοέʔδެ։ • Packagist • bmf-san/ahi-router • https://packagist.org/packages/bmf-san/ahi- router#2.0.0
࣮աఔ
࣮աఔͷ • URLϧʔςΟϯάͱԿ͔ʢཁ݅ఆٛʣ • ༷ΛܾΊΔ • ઃܭ • σʔλߏΛߟ͑Δ •
࣮
URLϧʔςΟϯάͱԿ͔
URLϧʔςΟϯάͱ • ϦΫΤετ͞ΕͨURLʹରͯ͠ɺ࣮ߦ͍ͨ͠ॲཧΛฦ͢ • ύεʢ/foo/bar/1ʣ෦Λύʔεͯ͠ɺҙͷΛฦ͢ • ਖ਼نදݱ • จࣈྻ୳ࡧΞϧΰϦζϜ
URLϧʔςΟϯάͱ IUUQFYBNQMFDPNGPPCBS GPPCBS JE͕ BDUJPO #BS$POUSPMMFS!TIPX 3PVUFS ϧʔςΟϯάॲཧΛߦ͏ *OQVU 0VUQVU
༷ΛܾΊΔ
༷ • ෳͷύεύϥϝʔλʔΛؚΉURLʹରԠ • /foo/bar/:foo/:bar • ΞΫγϣϯͱύϥϝʔλʔใΛฦ͢ • ϜζΧγΠίτϋϠϥφΠ •
ଟػೳ • ϋΠύϑΥʔϚϯε
σʔλߏΛߟ͑Δ
σʔλߏΛߟ͑Δ IUUQFYBNQMFDPNGPPCBS GPPCBS JE͕ BDUJPO #BS$POUSPMMFS!TIPX 3PVUFS *OQVU 0VUQVU
I/O Input • Path • /foo/bar/1 • HTTP Method •
GET/POST… Output • Action • ॲཧ • ex. PostController@getPosts • Parameters • ύεύϥϝʔλʔ • ex. /boo/bar/:id
Routing Map *OQVU 0VUQVU 3PVUFS 1BUI )551.FUIPE "DUJPO 1BSBNFUFST 3PVUJOH.BQ
ϧʔλʔ͕෦Ͱ࣋ͭ σʔλߏ
Routing Mapͱ • Routing Map • ϧʔςΟϯάͷͨΊͷσʔλߏ • Router͕෦తʹ࣋ͭ •
ϧʔςΟϯάͷఆ͔ٛΒੜ͞ΕΔ • URLͱ࣮ߦ͍ͨ͠ॲཧΛϚοϐϯά
Routing 1BUI .FUIPE "DUJPO (&5 *OEFY$POUSPMMFS!JOEFY QPTUT (&5 1PTU$POUSPMMFS!HFU1PTUT
QPTUTJE (&5 1PTU$POUSPMMFS!FEJU QPTUTJE 1045 1PTU$POUSPMMFS!VQEBUF QPTUTJEUPLFO (&5 1PTU$POUSPMMFS!QSFWJFX QPTUTDBUFHPSZ (&5 1PTU$POUSPMMFS!HFU1PTUT#Z$BUFHPSZ QSPpMF (&5 1SPpMF$POUSPMMFS!HFU1SPpMF
Routing 1BUI .FUIPE "DUJPO (&5 *OEFY$POUSPMMFS!JOEFY QPTUT (&5 1PTU$POUSPMMFS!HFU1PTUT
QPTUTJE (&5 1PTU$POUSPMMFS!FEJU QPTUTJE 1045 1PTU$POUSPMMFS!VQEBUF QPTUTJEUPLFO (&5 1PTU$POUSPMMFS!QSFWJFX QPTUTDBUFHPSZ (&5 1PTU$POUSPMMFS!HFU1PTUT#Z$BUFHPSZ QSPpMF (&5 1SPpMF$POUSPMMFS!HFU1SPpMF
ߏ ɹࠜʢSPPUʣ ɹࢬʢFEHFʣ ɹઅʢOPEFʣ ɹ༿ʢMFBGʣ
σʔλߏ 1BUI .FUIPE "DUJPO (&5 *OEFY$POUSPMMFS!JOEFY QPTUT (&5 1PTU$POUSPMMFS!HFU1PTUT
QPTUTJE (&5 1PTU$POUSPMMFS!FEJU QPTUTJE 1045 1PTU$POUSPMMFS!VQEBUF QPTUTJEUPLFO (&5 1PTU$POUSPMMFS!QSFWJFX QPTUTDBUFHPSZ (&5 1PTU$POUSPMMFS!HFU1PTUT#Z$BUFHPSZ QSPpMF (&5 1SPpMF$POUSPMMFS!HFU1SPpMF
UPLFO &/%@10*/5 &/%@10*/5 &/%@10*/5 &/%@10*/5 QSPpMF DBUFHPSZ &/%@10*/5 QPTUT
JE &/%@10*/5 ˞&/%@10*/5ޠฐ͕͋Γͦ͏ʜ
UPLFO &/%@10*/5 &/%@10*/5 &/%@10*/5 &/%@10*/5 QSPpMF DBUFHPSZ &/%@10*/5 QPTUT
JE &/%@10*/5 (&5QPTUT
UPLFO &/%@10*/5 &/%@10*/5 &/%@10*/5 &/%@10* /5 QSPpMF DBUFHPSZ &/%@10*/5
QPTUT JE &/%@10*/5 (&5QPTUT
UPLFO &/%@10*/5 &/%@10*/5 &/%@10*/5 &/%@10* /5 QSPpMF DBUFHPSZ &/%@10*/5
QPTUT JE &/%@10*/5 (&5QPTUT
UPLFO &/%@10*/5 &/%@10*/5 &/%@10*/5 &/%@10* /5 QSPpMF DBUFHPSZ &/%@10*/5
QPTUT JE &/%@10*/5 (&5QPTUT
UPLFO &/%@10*/5 &/%@10*/5 &/%@10*/5 &/%@10* /5 QSPpMF DBUFHPSZ &/%@10*/5
QPTUT JE &/%@10*/5 (&5QPTUT (&51PTU$POUSPMMFS!HFU1PTUT 10451PTU$POUSPMMFS!FEJU )551ϝιουʹԠͯ͡ॲཧΛৼΓ͚ ˞QBSBNFUFSTҰॹʹฦ͢
UPLFO &/%@10*/5 &/%@10*/5 &/%@10*/5 &/%@10*/5 QSPpMF DBUFHPSZ &/%@10*/5 QPTUT
JE &/%@10*/5
࣮
࣮
Routerͷ࣮ • ͲΜͳॲཧ͕ඞཁ͔ʁ • Routing MapΛੜ͢Δ • Routing Map͔Β୳ࡧ͢Δ
ϧʔςΟϯάϚοϓΛੜ • ϧʔςΟϯάϚοϓΛੜ͢Δ • PathɺHTTP MethodɺActionͷσʔληοτ͔Βੜ • /posts GET PostController@getPosts
ϧʔςΟϯάΛఆٛ͢Δ
࣮
ࢀরʢʣͰ͕ΜΔ
ϧʔςΟϯάϚοϓ͔Β୳ࡧ • ϧʔςΟϯάϚοϓ͔Β୳ࡧ͢Δ • ଟ࣍ݩྻΛ୳ࡧ͢Δॲཧ • →ߏͷ୳ࡧΞϧΰϦζϜ
None
՝ • ΤϥʔϋϯυϦϯά • ࣮ӡ༻ʹ͚ͨػೳ։ൃ • ϛυϧΣΞͷͭͳ͗ࠐΈ • ύεύϥϝʔλʹਖ਼نදݱ͕͑Δ •
ͦͷଞศརػೳͱ͔ • ࣮ߦͷߟྀ • ߏɺจࣈྻ୳ࡧΞϧΰϦζϜ
3 ·ͱΊ
·ͱΊ • ָ͍͠ • ࠶ؼॲཧࢀরʢ&ʣΛ͏ྑ͍࿅शʹͳͬͨ • ΞϧΰϦζϜΛֶͿ͖͔͚ͬʹͳͬͨ • ΑΓྑ͍ઃܭɺύϑΥʔϚϯεΛࢦ͢
ιʔε • Github • bmf-san/bmf-router • https://github.com/bmf-san/bmf-router
Thank you !