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
3k
PHPでURLルーティングを自作する
bmf_san
June 29, 2019
Tweet
Share
More Decks by bmf_san
See All by bmf_san
AAPについて調べてみた
bmf_san
0
45
レーダーをつくる
bmf_san
0
35
契約テストとPactについて
bmf_san
0
81
5分でわかるSLO
bmf_san
2
110
権限について考える
bmf_san
2
120
自作HTTPルーターから新しいServeMuxへ
bmf_san
3
1.8k
古くなってしまったPHPフレームワークとPHPのバージョンアップ戦略
bmf_san
1
400
アジャイルワークショップ
bmf_san
0
160
Makuakeの認証基盤とRe-Architectureチーム
bmf_san
0
2.8k
Other Decks in Programming
See All in Programming
Breaking Up with Big ViewModels — Without Breaking Your Architecture (droidcon Berlin 2025)
steliosf
PRO
1
330
高度なUI/UXこそHotwireで作ろう Kaigi on Rails 2025
naofumi
4
3.5k
Back to the Future: Let me tell you about the ACP protocol
terhechte
0
130
Model Pollution
hschwentner
1
180
Advance Your Career with Open Source
ivargrimstad
0
340
After go func(): Goroutines Through a Beginner’s Eye
97vaibhav
0
230
株式会社 Sun terras カンパニーデック
sunterras
0
230
タスクの特性や不確実性に応じた最適な作業スタイルの選択(ペアプロ・モブプロ・ソロプロ)と実践 / Optimal Work Style Selection: Pair, Mob, or Solo Programming.
honyanya
3
140
『毎日の移動』を支えるGoバックエンド内製開発
yutautsugi
2
190
どの様にAIエージェントと 協業すべきだったのか?
takefumiyoshii
2
610
ポスターセッション: 「まっすぐ行って、右!」って言ってラズパイカーを動かしたい 〜生成AI × Raspberry Pi Pico × Gradioの試作メモ〜
komofr
0
960
アメ車でサンノゼを走ってきたよ!
s_shimotori
0
140
Featured
See All Featured
Site-Speed That Sticks
csswizardry
11
880
Building an army of robots
kneath
306
46k
Reflections from 52 weeks, 52 projects
jeffersonlam
352
21k
How to Ace a Technical Interview
jacobian
280
24k
It's Worth the Effort
3n
187
28k
What's in a price? How to price your products and services
michaelherold
246
12k
Facilitating Awesome Meetings
lara
56
6.6k
Optimising Largest Contentful Paint
csswizardry
37
3.4k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.5k
Side Projects
sachag
455
43k
The Pragmatic Product Professional
lauravandoore
36
6.9k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.2k
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 !