Slide 1

Slide 1 text

URLϧʔςΟϯάΛͭ͘Δ @bmf_san @PHPerKaigi 2019 2019/03/31

Slide 2

Slide 2 text

@bmf_san bmf-san bmf-tech.com Twitter Github Blog

Slide 3

Slide 3 text

֓ཁ 1. ಈػ 2. ࣗ࡞΁ͷಓͷΓ • લఏɹ • ࣮૷લͷաఔ • ࢓༷ͱ͔ઃܭ·ͱΊ 3. ࣮૷ • ۩ମతͳ࣮૷಺༰ʹ͍ͭͯ͸͋·Γ৮Ε·ͤΜɻʢ࣌ؒత౎߹ʣ • ࣮૷͢ΔࡍͷϙΠϯτ 4. ·ͱΊ • ࣗ࡞ͯ͠Έͨॴײ

Slide 4

Slide 4 text

ιʔε • Github • bmf-san/ahi-router • https://github.com/bmf-san/ahi-router

Slide 5

Slide 5 text

1 ಈػ

Slide 6

Slide 6 text

ಈػ • goͰϧʔςΟϯάΛࣗલͰ࣮૷͔ͨͬͨ͠ • Ͱ΋goͦΜͳʹ׳Ε͍ͯͳ͍… • phperkaigiͷcfpग़͍ͨ͠ɺͰ΋ωλ͕… • ͦ΋ͦ΋ϧʔςΟϯάͬͯͲ͏΍࣮ͬͯ૷͞Ε͍ͯΔΜ ͩΖ͏…

Slide 7

Slide 7 text

ؐΖ͏͓ΕͨͪͷPHP΁

Slide 8

Slide 8 text

2 ࣗ࡞΁ͷಓͷΓ

Slide 9

Slide 9 text

͜Μͳͷ͕Ͱ͖ͨ

Slide 10

Slide 10 text

ϧʔςΟϯάΛఆٛ͢Δ ୳ࡧ݁ՌΛಘΔ ࠓճ࣮૷ͨ͠3PVUFSύοέʔδ

Slide 11

Slide 11 text

ΞΫγϣϯͱύεύϥϝʔλ͕औಘͰ͖Δ

Slide 12

Slide 12 text

URLϧʔςΟϯάͱ͸ • ϦΫΤετ͞ΕͨURLʹରͯ͠ɺ࣮ߦ͍ͨ͠ॲཧΛฦ͢ • ύεʢ/foo/bar/1ʣ෦෼Λύʔεͯ͠ɺ೚ҙͷ஋Λฦ͢ • ਖ਼نදݱ • จࣈྻ୳ࡧΞϧΰϦζϜ

Slide 13

Slide 13 text

URLϧʔςΟϯάͱ͸ IUUQFYBNQMFDPNGPPCBS GPPCBS JE͕
 BDUJPO͸ #BS$POUSPMMFS!TIPX 3PVUFS ϧʔςΟϯάॲཧΛߦ͏ *OQVU 0VUQVU

Slide 14

Slide 14 text

PHPͷϧʔςΟϯάϥΠϒϥϦ • FastRoute • https://github.com/nikic/FastRoute • Pux • https://github.com/c9s/Pux • Klein • https://github.com/klein/klein.php • etc…

Slide 15

Slide 15 text

࢓༷ • ෳ਺ͷύεύϥϝʔλʔΛؚΉURLʹରԠ • /foo/bar/:foo/:bar • ΞΫγϣϯͱύϥϝʔλʔ৘ใΛฦ͢ • ϜζΧγΠίτϋϠϥφΠ • ศརͳػೳͱ͔

Slide 16

Slide 16 text

RouterΛͭ͘Δ IUUQFYBNQMFDPNGPPCBS GPPCBS JE͕
 BDUJPO͸ #BS$POUSPMMFS!TIPX 3PVUFS *OQVU 0VUQVU

Slide 17

Slide 17 text

I/O Input • Path • /foo/bar/1 • HTTP Method • GET/POST… • Routing Definition • ϧʔςΟϯάͷఆٛ Output • Action • ॲཧʢฦ͍ͨ͠஋ʣ • ex. PostController@getPosts • Parameters • ύεύϥϝʔλʔ • ex. /boo/bar/1 • /foo/bar/:id • → id 1

Slide 18

Slide 18 text

Routing Map *OQVU 0VUQVU 3PVUFS 1BUI )551.FUIPE 3PVUJOH%FpOJUJPO 1BUI )551.FUIPE 3PVUJOH.BQ ϧʔςΟϯάͷͨΊ ͷσʔλߏ଄

Slide 19

Slide 19 text

Routing Mapͱ͸ • Routing Map • ϧʔςΟϯάͷͨΊͷσʔλߏ଄ • Router͕಺෦తʹ࣋ͭ • URLͱ࣮ߦ͍ͨ͠ॲཧΛϚοϐϯά

Slide 20

Slide 20 text

Routing Map *OQVU 0VUQVU 3PVUFS 3PVUJOH.BQ ϧʔςΟϯάͷͨΊ ͷσʔλߏ଄ .BQΛੜ੒ .BQ͔Β୳ࡧ

Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

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

Slide 23

Slide 23 text

໦ߏ଄ ɹࠜʢSPPUʣ ɹࢬʢFEHFʣ ɹઅʢOPEFʣ ɹ༿ʢMFBGʣ

Slide 24

Slide 24 text

σʔλߏ଄ 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

Slide 25

Slide 25 text

UPLFO &/%@10*/5 &/%@10*/5 &/%@10*/5 &/%@10*/5 QSPpMF DBUFHPSZ &/%@10*/5 QPTUT JE &/%@10*/5 ˞&/%@10*/5͸ޠฐ͕͋Γͦ͏ʜ

Slide 26

Slide 26 text

UPLFO &/%@10*/5 &/%@10*/5 &/%@10*/5 &/%@10*/5 QSPpMF DBUFHPSZ &/%@10*/5 QPTUT JE &/%@10*/5 (&5QPTUT

Slide 27

Slide 27 text

UPLFO &/%@10*/5 &/%@10*/5 &/%@10*/5 &/%@10* /5 QSPpMF DBUFHPSZ &/%@10*/5 QPTUT JE &/%@10*/5 (&5QPTUT

Slide 28

Slide 28 text

UPLFO &/%@10*/5 &/%@10*/5 &/%@10*/5 &/%@10* /5 QSPpMF DBUFHPSZ &/%@10*/5 QPTUT JE &/%@10*/5 (&5QPTUT

Slide 29

Slide 29 text

UPLFO &/%@10*/5 &/%@10*/5 &/%@10*/5 &/%@10* /5 QSPpMF DBUFHPSZ &/%@10*/5 QPTUT JE &/%@10*/5 (&5QPTUT

Slide 30

Slide 30 text

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΋Ұॹʹฦ͢

Slide 31

Slide 31 text

UPLFO &/%@10*/5 &/%@10*/5 &/%@10*/5 &/%@10*/5 QSPpMF DBUFHPSZ &/%@10*/5 QPTUT JE &/%@10*/5

Slide 32

Slide 32 text

࣮૷

Slide 33

Slide 33 text

3 ࣮૷

Slide 34

Slide 34 text

࣮૷ • ͲΜͳॲཧ͕ඞཁ͔ʁ • Routing MapΛੜ੒͢Δ • Routing Map͔Β୳ࡧ͢Δ

Slide 35

Slide 35 text

࣮૷Πϝʔδ *OQVU 0VUQVU 3PVUFS 3PVUJOH.BQ ϧʔςΟϯάͷͨΊ ͷσʔλߏ଄ .BQΛੜ੒ .BQ͔Β୳ࡧ

Slide 36

Slide 36 text

͓໿ଋ • PHPͷਖ਼نදݱ͸ۃྗආ͚Δ • ΦϨΦϨΞϧΰϦζϜͰߟ͑ͯΈ͔ͨͬͨ • ͱΓ͋͑ͣಈ͘Ϟϊʹ͸͢Δ • ϓϩμΫγϣϯͰ࢖͏Ϩϕϧ·Ͱ͸ͪΐͬͱ…

Slide 37

Slide 37 text

ιʔε • Github • bmf-san/ahi-router • https://github.com/bmf-san/ahi-router

Slide 38

Slide 38 text

ϧʔςΟϯάϚοϓΛੜ੒ • ϧʔςΟϯάϚοϓΛੜ੒͢Δ • PathɺMethodɺActionͷσʔληοτ͔Βੜ੒ • /posts GET PostController@getPosts

Slide 39

Slide 39 text

No content

Slide 40

Slide 40 text

ϧʔςΟϯάΛఆٛ͢Δ

Slide 41

Slide 41 text

࣮૷

Slide 42

Slide 42 text

ࢀরʢʣͰ͕Μ͹Δ

Slide 43

Slide 43 text

ϧʔςΟϯάϚοϓ͔Β୳ࡧ • ϧʔςΟϯάϚοϓ͔Β୳ࡧ͢Δ • ଟ࣍ݩ഑ྻΛ୳ࡧ͢Δॲཧ • →໦ߏ଄ͷ୳ࡧΞϧΰϦζϜ

Slide 44

Slide 44 text

No content

Slide 45

Slide 45 text

1)1ͷਖ਼نදݱ͸ආ͚ͯΦϨΦϨจࣈྻ୳ࡧ

Slide 46

Slide 46 text

՝୊ • ͪΌΜͱ΍Ε͍ͯͳ͍ • ΤϥʔϋϯυϦϯά • ࣮ߦ଎౓ͷߟྀ • ໦ߏ଄ɺจࣈྻ୳ࡧΞϧΰϦζϜΛֶͿ • Ͱ͖ͨΒྑͦ͞͏ • ωʔϜϧʔτʢϧʔςΟϯάͷάϧʔϐϯάʣ • ύεύϥϝʔλʔʹਖ਼نදݱΛ࢖͑ΔΑ͏ʹ͢Δ • :id → \d ਺஋͚ͩώοτ͢ΔΑ͏ʹ͢Δɺͱ͔ • ϛυϧ΢ΣΞͱͷͭͳ͗ࠐΈ

Slide 47

Slide 47 text

ύοέʔδެ։ • Packagist • bmf-san/ahi-router • https://packagist.org/packages/bmf-san/ahi- router#2.0.0

Slide 48

Slide 48 text

4 ·ͱΊ

Slide 49

Slide 49 text

·ͱΊ • 158ߦͰಈ͍ͨ • https://github.com/bmf-san/ahi-router/blob/master/src/ Router.phpɹ • ࠶ؼॲཧͱύϫʔϓϨΠͰͳΜͱ͔͍͚Δ • ͪΌΜͱ΍ΔͳΒ • ໦ߏ଄ͷΞϧΰϦζϜʢτϥΠ໦ɺج਺໦ɺύτϦγΞ ໦… etcʣΛֶΜͰదͨ͠΋ͷΛબఆ͢Δ

Slide 50

Slide 50 text

͓·͚ • bmf-tech.com • URLϧʔςΟϯάΛͭ͘ΔɹΤϐιʔυ1 • https://bmf-tech.com/posts/ URL%E3%83%AB%E3%83%BC%E3%83%86%E3%82%A3%E3%83%B3%E3%82%B0%E3%82%92%E3%81%A4%E3% 81%8F%E3%82%8B%E3%80%80%E3%82%A8%E3%83%94%E3%82%BD%E3%83%BC%E3%83%891 • URLϧʔςΟϯάΛͭ͘ΔɹΤϐιʔυ2 • https://bmf-tech.com/posts/ URL%E3%83%AB%E3%83%BC%E3%83%86%E3%82%A3%E3%83%B3%E3%82%B0%E3%82%92%E3%81%A4%E3% 81%8F%E3%82%8B%E3%80%80%E3%82%A8%E3%83%94%E3%82%BD%E3%83%BC%E3%83%892 • URLϧʔςΟϯάΛͭ͘ΔɹΤϐιʔυ3ʢ׬݁ฤʣ • https://bmf-tech.com/posts/ URL%E3%83%AB%E3%83%BC%E3%83%86%E3%82%A3%E3%83%B3%E3%82%B0%E3%82%92%E3%81%A4%E3% 81%8F%E3%82%8B%E3%80%80%E3%82%A8%E3%83%94%E3%82%BD%E3%83%BC%E3%83%893%EF%BC%88% E5%AE%8C%E7%B5%90%E7%B7%A8%EF%BC%89 • Speakerdeck • URLϧʔςΟϯάΛͭ͘ΔΤϐιʔυ1 • https://speakerdeck.com/bmf_san/urlruteinguwotukuruepisodo1

Slide 51

Slide 51 text

Thank you !