Slide 1

Slide 1 text

PHPͰURLϧʔςΟϯάΛࣗ࡞͢Δ @bmf_san @PHP Conference Fukuoka 2019 2019/06/29

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

֓ཁ 1. ಈػ • ϧʔςΟϯάΛࣗ࡞͠Α͏ͱࢥ͖͔͚ͬͨͬ 2. Ͳ͏࡞͔ͬͨʁ • ࣮૷աఔʹ͍ͭͯ 3. ·ͱΊ

Slide 4

Slide 4 text

1 ಈػ

Slide 5

Slide 5 text

ಈػ • ݩʑGolangͰ࣮૷͍ͨ͠ͱߟ͍͑ͯͨ • ͱΓ͋͑ͣ׳Ε͍ͯΔPHP͔Βɾɾ • ͳΜ͔ࣗ࡞ͯ͠ΈͨΒ໘നͦ͏ʢখฒײʣ

Slide 6

Slide 6 text

2 Ͳ͏࡞͔ͬͨʁ

Slide 7

Slide 7 text

࣮ࡍʹ࡞ͬͨ΋ͷ

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

࣮૷աఔ

Slide 13

Slide 13 text

࣮૷աఔͷ࿩ • URLϧʔςΟϯάͱ͸Կ͔ʢཁ݅ఆٛʣ • ࢓༷ΛܾΊΔ • ઃܭ • σʔλߏ଄Λߟ͑Δ • ࣮૷

Slide 14

Slide 14 text

URLϧʔςΟϯάͱ͸Կ͔

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

࢓༷ΛܾΊΔ

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

σʔλߏ଄Λߟ͑Δ

Slide 20

Slide 20 text

σʔλߏ଄Λߟ͑Δ IUUQFYBNQMFDPNGPPCBS GPPCBS JE͕
 BDUJPO͸ #BS$POUSPMMFS!TIPX 3PVUFS *OQVU 0VUQVU

Slide 21

Slide 21 text

I/O Input • Path • /foo/bar/1 • HTTP Method • GET/POST… Output • Action • ॲཧ • ex. PostController@getPosts • Parameters • ύεύϥϝʔλʔ • ex. /boo/bar/:id

Slide 22

Slide 22 text

Routing Map *OQVU 0VUQVU 3PVUFS 1BUI )551.FUIPE "DUJPO 1BSBNFUFST 3PVUJOH.BQ ϧʔλʔ͕಺෦Ͱ࣋ͭ σʔλߏ଄

Slide 23

Slide 23 text

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

Slide 24

Slide 24 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 25

Slide 25 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 26

Slide 26 text

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

Slide 27

Slide 27 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 28

Slide 28 text

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

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

Slide 31

Slide 31 text

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

Slide 32

Slide 32 text

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

Slide 33

Slide 33 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 34

Slide 34 text

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

Slide 35

Slide 35 text

࣮૷

Slide 36

Slide 36 text

࣮૷

Slide 37

Slide 37 text

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

Slide 38

Slide 38 text

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

Slide 39

Slide 39 text

ϧʔςΟϯάΛఆٛ͢Δ

Slide 40

Slide 40 text

࣮૷

Slide 41

Slide 41 text

ࢀরʢʣͰ͕Μ͹Δ

Slide 42

Slide 42 text

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

Slide 43

Slide 43 text

No content

Slide 44

Slide 44 text

՝୊ • ΤϥʔϋϯυϦϯά • ࣮ӡ༻ʹ޲͚ͨػೳ։ൃ • ϛυϧ΢ΣΞͷͭͳ͗ࠐΈ • ύεύϥϝʔλʹਖ਼نදݱ͕࢖͑Δ • ͦͷଞศརػೳͱ͔ • ࣮ߦ଎౓ͷߟྀ • ໦ߏ଄ɺจࣈྻ୳ࡧΞϧΰϦζϜ

Slide 45

Slide 45 text

3 ·ͱΊ

Slide 46

Slide 46 text

·ͱΊ • ָ͍͠ • ࠶ؼॲཧ΍ࢀরʢ&ʣΛ࢖͏ྑ͍࿅शʹͳͬͨ • ΞϧΰϦζϜΛֶͿ͖͔͚ͬʹͳͬͨ • ΑΓྑ͍ઃܭɺύϑΥʔϚϯεΛ໨ࢦ͢

Slide 47

Slide 47 text

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

Slide 48

Slide 48 text

Thank you !