Slide 1

Slide 1 text

ԕ౻ଠಙ(.01FQBCP *OD 1)1FS,BJHJ ϑϨʔϜϫʔΫΛ࡞Γͳ͕Β -BSBWFMͷΞʔΩςΫνϟΛֶͿ

Slide 2

Slide 2 text

ԕ౻ଠಙ ͑ΜͲ͎ʔ !'FOEP 4)ࣄۀ෦(PPQFάϧʔϓ8FCΤϯδχΞ @Fendo181 @Fendo181

Slide 3

Slide 3 text

ɾ؆୯ʹࣗ෼ͷϗʔϜϖʔδ͕࡞੒Ͱ͖Δ ɾࠓ೥ͰαʔϏεՔಇͯ͠೥໨

Slide 4

Slide 4 text

ࠓ೥ແࣄʹΞϓϦ͕ϦϦʔε ϞόΠϧ"1*͸-BSBWFMͰ։ൃ

Slide 5

Slide 5 text

-VNFOͰݎ࿚ͳ"1*Λઃܭ͢Δɻ ͜Ε·Ͱ΍͖ͬͯͨࣄ -BSBWFMΛ࢖ͬͨطଘ8FCαʔϏεͷ"1*Խ

Slide 6

Slide 6 text

͜Ε·Ͱ΍͖ͬͯͨࣄ -BSBWFM+1$POGFSFODFͷίΞελοϑͱͯ͠ࢀՃͯ͠ࢥͬͨࣄΛޠΓ͍ͨ

Slide 7

Slide 7 text

ࠓ೔͓࿩͍ͨ͠ࣄ

Slide 8

Slide 8 text

ࠓ೔͓࿩͍ͨ͠ࣄ ൃද಺༰ͷഎܠ 1)1Ͱ.7$ϑϨʔϜϫʔΫΛࣗ࡞ͯ͠ΈΔ -BSBWFMͷΞʔΩςΫνϟΛֶͼɺࣗ࡞'8ͱൺֱͯ͠ΈΔ ·ͱΊ

Slide 9

Slide 9 text

ൃද಺༰ͷഎܠ

Slide 10

Slide 10 text

ൃද಺༰ͷഎܠ ϑϨʔϜϫʔΫΛ࡞Γͳ͕Β -BSBWFMͷΞʔΩςΫνϟΛֶͿ

Slide 11

Slide 11 text

ൃද಺༰ͷഎܠ ϑϨʔϜϫʔΫΛ࡞Γͳ͕Β -BSBWFMͷΞʔΩςΫνϟΛֶͿ ͿͬͪΌ͚ɺϑϨʔϜϫʔΫΛ࡞Βͳͯ͘΋ -BSBWFMͷΞʔΩςΫνϟ͸ֶ΂Δ

Slide 12

Slide 12 text

ൃද಺༰ͷഎܠ $IBQUFSͰղઆͯ͠·͢ʂ

Slide 13

Slide 13 text

ൃද಺༰ͷഎܠ ͳͥϑϨʔϜϫʔΫΛ࡞Δͷ͔

Slide 14

Slide 14 text

ൃද಺༰ͷഎܠ ͳͥϑϨʔϜϫʔΫΛ࡞Δͷ͔ ཧ༝ϑϨʔϜϫʔΫͷϩδοΫΛֶͼ͔ͨͬͨɻ ɾ.7$σβΠϯύλʔϯ ɾ"VUP-PBEFS ɾϧʔςΟϯάͷ࢓૊Έ ɾϏϡʔͷ࢓૊Έ ɾϞσϧͷ࢓૊Έ

Slide 15

Slide 15 text

ൃද಺༰ͷഎܠ ͳͥϑϨʔϜϫʔΫΛ࡞Δͷ͔ ཧ༝ϑϨʔϜϫʔΫͷϩδοΫΛֶͼ͔ͨͬͨɻ ɾ.7$σβΠϯύλʔϯ ɾ"VUP-PBEFS ɾϧʔςΟϯάͷ࢓૊Έ ɾϏϡʔͷ࢓૊Έ ɾϞσϧͷ࢓૊Έ ཧ༝V[VMMB͞Μ͕೥ʹൃදͨ͠εϥΠυ

Slide 16

Slide 16 text

ൃද಺༰ͷഎܠ 1)1FSਓੜɺҰ౓͸ϑϨʔϜϫʔΫΛ࡞͓ͬͯ͜͏

Slide 17

Slide 17 text

ൃද಺༰ͷഎܠ

Slide 18

Slide 18 text

ൃද಺༰ͷഎܠ ϑϨʔϜϫʔΫ࡞Γ͍ͨͬʂ ೥౰࣌͸·ͩେֶੜ

Slide 19

Slide 19 text

ൃද಺༰ͷഎܠ ͦΕ͔Β݄೔͕ྲྀΕͯʜ

Slide 20

Slide 20 text

ൃද಺༰ͷഎܠ ϑϨʔϜϫʔΫ࡞ͬͨͧ ࣾձਓ೥໨

Slide 21

Slide 21 text

ൃද಺༰ͷഎܠ ͳͥ-BSBWFMͷΞʔΩςΫνϟΛֶͿͷ͔

Slide 22

Slide 22 text

ൃද಺༰ͷഎܠ ͳͥ-BSBWFMͷΞʔΩςΫνϟΛֶͿͷ͔ ཧ༝ )PX खஈ Ͱ͸ͳ͘8IZ ຊ࣭ Λशಘ͔ͨͬͨ͠

Slide 23

Slide 23 text

ൃද಺༰ͷഎܠ ʲ຋༁ʳzखஈz͸zຊ࣭zΑΓ΋ૣ͘ഇΕΔ

Slide 24

Slide 24 text

ൃද಺༰ͷഎܠ ϑϨʔϜϫʔΫʹݶఆ͞ΕΔ஌ࣝͱ͍͏ͷ͸ɺഇΕ΍͘͢ɺଞͷٕज़ʹҠߦͰ͖ͳ͍ ϑϨʔϜϫʔΫͰ˓˓͢Δ஌ࣝΛz)PXz खஈ ϑϨʔϜϫʔΫʹݶఆͤͣଞͷٕज़Ͱ΋ྲྀ༻Ͱ͖Δ஌ࣝΛz8IZz ຊ࣭

Slide 25

Slide 25 text

ൃද಺༰ͷഎܠ ͳͥ-BSBWFMͷΞʔΩςΫνϟΛֶͿͷ͔ ཧ༝ )PX खஈ Ͱ͸ͳ͘8IZ ຊ࣭ Λशಘ͔ͨͬͨ͠ 8IZ ຊ࣭ ΛֶͿࣄ͸ࠓޙͷΤϯδχΞͱͯ͠΋ ·ͨΞϓϦέʔγϣϯ։ൃʹ͓͍ͯڧΈʹͳΔͱ൑அͨ͠ɻ

Slide 26

Slide 26 text

1)1Ͱ.7$ϑϨʔϜϫʔΫΛࣗ࡞ͯ͠ΈΔ

Slide 27

Slide 27 text

1)1Ͱࣗ࡞.7$ϑϨʔϜϫʔΫΛࣗ࡞͢Δ ࣌ؒͷ౎߹্શͯΛޠΔͷ͸ݫ͍͠ͷͰ ཁ఺͚ͩߜͬͯ஻Γ·͢

Slide 28

Slide 28 text

1)1Ͱࣗ࡞.7$ϑϨʔϜϫʔΫΛࣗ࡞͢Δ ૣ଎Ͱ͕͢ʜ

Slide 29

Slide 29 text

1)1Ͱࣗ࡞.7$ϑϨʔϜϫʔΫΛࣗ࡞͢Δ 9೥ ੈք͸ن໿ͷԌʹแ·Εͨ

Slide 30

Slide 30 text

1)1Ͱࣗ࡞.7$ϑϨʔϜϫʔΫΛࣗ࡞͢Δ ͔͠͠ɺ্࢘͸ ૣ͘γεςϜΛ࡞Εͱ͍͏

Slide 31

Slide 31 text

1)1Ͱࣗ࡞.7$ϑϨʔϜϫʔΫΛࣗ࡞͢Δ ͦ͜ʹҰਓͷٹੈओ͕ʜ

Slide 32

Slide 32 text

1)1Ͱࣗ࡞.7$ϑϨʔϜϫʔΫΛࣗ࡞͢Δ ˞ୈষͰࣗ࡞ϑϨʔϜϫʔΫͷ࡞ΓํΛ঺հ͍ͯ͠·͢ɻ

Slide 33

Slide 33 text

1)1Ͱࣗ࡞.7$ϑϨʔϜϫʔΫΛࣗ࡞͢Δ ΦϨΦϨϑϨʔϜϫʔΫ େߤւ࣌୅ͷນ։͚Ͱ͋Δʜ

Slide 34

Slide 34 text

1)1Ͱࣗ࡞.7$ϑϨʔϜϫʔΫΛࣗ࡞͢Δ ͱ͍͏ઃఆͰ͓ฉ͖Լ͍͞

Slide 35

Slide 35 text

1)1Ͱࣗ࡞.7$ϑϨʔϜϫʔΫΛࣗ࡞͢Δ ࡞ΔϑϨʔϜϫʔΫͷ࢓༷ ɾ.7$ύλʔϯ ɾ%#ૢ࡞͕Ͱ͖Δ ɾಈతͳϧʔςΟϯάॲཧ͕Մೳ ɾϨΠΞ΢τϑΝΠϧΛ࢖ͬͨ7JFX

Slide 36

Slide 36 text

1)1Ͱࣗ࡞.7$ϑϨʔϜϫʔΫΛࣗ࡞͢Δ ɾηογϣϯͷ؅ཧ ɾϩάΠϯػೳ ࣌ؒͷ౎߹Ͱল͔ͤͯ௖͘ॲཧ

Slide 37

Slide 37 text

1)1Ͱࣗ࡞.7$ϑϨʔϜϫʔΫΛࣗ࡞͢Δ ͻͨ͢Βࣸܦ

Slide 38

Slide 38 text

1)1Ͱࣗ࡞.7$ϑϨʔϜϫʔΫΛࣗ࡞͢Δ Ͱ͖ͨͬͬʂʂʂʂ

Slide 39

Slide 39 text

1)1Ͱࣗ࡞.7$ϑϨʔϜϫʔΫΛࣗ࡞͢Δ 4PLV'SBNFXPSL

Slide 40

Slide 40 text

1)1Ͱࣗ࡞.7$ϑϨʔϜϫʔΫΛࣗ࡞͢Δ

Slide 41

Slide 41 text

1)1Ͱࣗ࡞.7$ϑϨʔϜϫʔΫΛࣗ࡞͢Δ ϑϨʔϜϫʔΫͷίΞͱͳΔػೳ

Slide 42

Slide 42 text

1)1Ͱࣗ࡞.7$ϑϨʔϜϫʔΫΛࣗ࡞͢Δ ϑϨʔϜϫʔΫͷίΞͱͳΔػೳ Φʔτϩʔυͷ໾ׂΛ࣋ͭ $MBTT-PBEFSQIQ

Slide 43

Slide 43 text

$MBTT-PBEFS͸ͳͥ͋Δͷ͔ 1)1Ͱࣗ࡞.7$ϑϨʔϜϫʔΫΛࣗ࡞͢Δ

Slide 44

Slide 44 text

1)1Ͱࣗ࡞.7$ϑϨʔϜϫʔΫΛࣗ࡞͢Δ $MBTT-PBEFSͷ࢓૊Έ public function register() { spl_autoload_register([$this,'loadClass']); } . (লུ) . public function loadClass($class) { foreach ($this->dir as $dir){ $file = $dir . '/' . $class.'.php'; // Tells whether a file exists and is readable if(is_readable($file)){ require $file; return; } } } $MBTT-PBEFSQIQ Ұ෦ൈਮ

Slide 45

Slide 45 text

1)1Ͱࣗ࡞.7$ϑϨʔϜϫʔΫΛࣗ࡞͢Δ ΫϥεΛݺͼग़͢ࡍʹɺSFRVJSFॻ͔ͳͯ͘΋ ࣗಈͰΫϥεϑΝΠϧΛಡΈ͜Ήࣄ͕Ͱ͖Δ

Slide 46

Slide 46 text

1)1Ͱࣗ࡞.7$ϑϨʔϜϫʔΫΛࣗ࡞͢Δ ಺෦ͰΫϥεΛಡΈࠐΜͰ͍Δॲཧ͸Ұॹ ࠓճDPNQPTFSKTPO͸࢖Θͳ͍ͷͰεϧʔ

Slide 47

Slide 47 text

1)1Ͱࣗ࡞.7$ϑϨʔϜϫʔΫΛࣗ࡞͢Δ "QQMJDBUJPOΫϥεʹϧʔςΟϯάઃఆΛ௥Ճ͢Δ

Slide 48

Slide 48 text

1)1Ͱࣗ࡞.7$ϑϨʔϜϫʔΫΛࣗ࡞͢Δ protected function registerRoutes() { return [ '/' => ['controller' => 'post', 'action' => 'home'], '/hello' => ['controller' => 'post', 'action' => 'hello'], ]; } $POUSPMMFS໊ "DUJPO໊ ࣮ߦ͢Δϝιου ϧʔςΟϯάઃఆ

Slide 49

Slide 49 text

1)1Ͱࣗ࡞.7$ϑϨʔϜϫʔΫΛࣗ࡞͢Δ $POUSPMMFSϑΝΠϧΛ഑ஔ .PEFMϑΝΠϧΛ഑ஔ 7JFXϑΝΠϧΛ഑ஔ

Slide 50

Slide 50 text

1)1Ͱࣗ࡞.7$ϑϨʔϜϫʔΫΛࣗ࡞͢Δ 7JFXϑΝΠϧΛ഑ஔ "QQMJDBUJPOΫϥεʹϧʔςΟϯάઃఆΛ௥Ճ͢Δ

Slide 51

Slide 51 text

1)1Ͱࣗ࡞.7$ϑϨʔϜϫʔΫΛࣗ࡞͢Δ protected function registerRoutes() { return [ '/' => ['controller' => 'post', 'action' => 'home'], '/hello' => ['controller' => 'post', 'action' => 'hello'], ]; } $POUSPMMFS໊ "DUJPO໊ ࣮ߦ͢Δϝιου $POUSPMMFS໊͕σΟϨΫτϦʹͳΓ ࢦఆ͕ͳ͚Ε͹"DUJPO໊͕ςϯϓϨʔτϑΝΠϧʹͳΔ ϧʔςΟϯάઃఆ

Slide 52

Slide 52 text

1)1Ͱࣗ࡞.7$ϑϨʔϜϫʔΫΛࣗ࡞͢Δ protected function registerRoutes() { return [ '/' => ['controller' => 'post', 'action' => 'home'], '/hello' => ['controller' => 'post', 'action' => 'hello'], ]; } $POUSPMMFS໊ "DUJPO໊ ࣮ߦ͢Δϝιου WJFXTDPOUSPMMFS@OBNFBDUJPO@OBNF 7JFXϑΝΠϧͷ໊લղܾϧʔϧ

Slide 53

Slide 53 text

1)1Ͱࣗ࡞.7$ϑϨʔϜϫʔΫΛࣗ࡞͢Δ protected function registerRoutes() { return [ '/' => ['controller' => 'post', 'action' => 'home'], '/hello' => ['controller' => 'post', 'action' => 'hello'], ]; } $POUSPMMFS໊ "DUJPO໊ ࣮ߦ͢Δϝιου 7JFXϑΝΠϧͷ໊લղܾϧʔϧ

Slide 54

Slide 54 text

1)1Ͱࣗ࡞.7$ϑϨʔϜϫʔΫΛࣗ࡞͢Δ protected function registerRoutes() { return [ '/' => ['controller' => 'post', 'action' => 'home'], '/hello' => ['controller' => 'post', 'action' => 'hello'], ]; } $POUSPMMFS໊ "DUJPO໊ ࣮ߦ͢Δϝιου 7JFXϑΝΠϧͷ໊લղܾϧʔϧ $POUSPMMFS໊ "DUJPO໊

Slide 55

Slide 55 text

ΞϓϦέʔγϣϯͷྲྀΕΛ ௥͍ͬͯ͘ 1)1Ͱࣗ࡞.7$ϑϨʔϜϫʔΫΛࣗ࡞͢Δ

Slide 56

Slide 56 text

શମͷΞϓϦέʔγϣϯͷྲྀΕ 1)1Ͱࣗ࡞.7$ϑϨʔϜϫʔΫΛࣗ࡞͢Δ 3FRVFTU 3PVUFS $POUSPMMFS %C.BOBHFS %C3FQPTJUPSZ 7JFX 3FTQPOTF "QQMJDBUJPO

Slide 57

Slide 57 text

1)1Ͱࣗ࡞.7$ϑϨʔϜϫʔΫΛࣗ࡞͢Δ 3FRVFTU 3PVUFS $POUSPMMFS %C.BOBHFS 7JFX 3FTQPOTF "QQMJDBUJPO %C3FQPTJUPSZ ᶃʮίϝϯτ౤ߘҰཡʯը໘͕ݟ͍ͨ શମͷΞϓϦέʔγϣϯͷྲྀΕ

Slide 58

Slide 58 text

1)1Ͱࣗ࡞.7$ϑϨʔϜϫʔΫΛࣗ࡞͢Δ ϑϩϯτίϯτϩʔϥʔ͕ಡΈࠐ·Εͨࡍʹɺ ΞϓϦέʔγϣϯ͕࣮ߦ͞ΕΔ

Slide 59

Slide 59 text

1)1Ͱࣗ࡞.7$ϑϨʔϜϫʔΫΛࣗ࡞͢Δ ΞϓϦέʔγϣϯΫϥε ɾ%#΁઀ଓ͢Δҝͷॳظઃఆ ɾϧʔςΟϯάઃఆ

Slide 60

Slide 60 text

1)1Ͱࣗ࡞.7$ϑϨʔϜϫʔΫΛࣗ࡞͢Δ 3FRVFTU 3PVUFS $POUSPMMFS %C.BOBHFS 7JFX 3FTQPOTF "QQMJDBUJPO %C3FQPTJUPSZ ᶃʮIUUQFYBNQMFDPNQPTUTʯ͕ݟ͍ͨ શମͷΞϓϦέʔγϣϯͷྲྀΕ

Slide 61

Slide 61 text

1)1Ͱࣗ࡞.7$ϑϨʔϜϫʔΫΛࣗ࡞͢Δ 3FRVFTU 3PVUFS $POUSPMMFS %C.BOBHFS 7JFX 3FTQPOTF "QQMJDBUJPO %C3FQPTJUPSZ ᶄ(&5Ͱ IUUQFYBNQMFDPNQPTUT΁ϦΫΤετ͢Δ 3FRVFTU શମͷΞϓϦέʔγϣϯͷྲྀΕ

Slide 62

Slide 62 text

%C3FQPTJUPSZ 1)1Ͱࣗ࡞.7$ϑϨʔϜϫʔΫΛࣗ࡞͢Δ 3FRVFTU 3PVUFS $POUSPMMFS %C.BOBHFS 7JFX 3FTQPOTF "QQMJDBUJPO 3PVUFS ᶅϧʔςΟϯάॲཧ ϦΫΤετͰड͚ͬͨ63-͔Β1"5)@*/'0ΛऔΓग़ͯ͠ $POUSPMMFSͱ"DUJPOΛಛఆ͢Δ શମͷΞϓϦέʔγϣϯͷྲྀΕ

Slide 63

Slide 63 text

%C3FQPTJUPSZ 1)1Ͱࣗ࡞.7$ϑϨʔϜϫʔΫΛࣗ࡞͢Δ 3FRVFTU 3PVUFS $POUSPMMFS %C.BOBHFS 7JFX 3FTQPOTF "QQMJDBUJPO 3PVUFS ᶅϧʔςΟϯάॲཧ ϦΫΤετͰड͚ͬͨ63-͔Β1"5)@*/'0ΛऔΓग़ͯ͠ $POUSPMMFSͱ"DUJPOΛಛఆ͢Δ ᶄ(&5Ͱ IUUQFYBNQMFDPNQPTUT΁ϦΫΤετ͢Δ શମͷΞϓϦέʔγϣϯͷྲྀΕ

Slide 64

Slide 64 text

%C3FQPTJUPSZ 1)1Ͱࣗ࡞.7$ϑϨʔϜϫʔΫΛࣗ࡞͢Δ 3FRVFTU 3PVUFS $POUSPMMFS %C.BOBHFS 7JFX 3FTQPOTF "QQMJDBUJPO 3PVUFS ᶅϧʔςΟϯάॲཧ ϦΫΤετͰड͚ͬͨ63-͔Β1"5)@*/'0ΛऔΓग़ͯ͠ $POUSPMMFSͱ"DUJPOΛಛఆ͢Δ શମͷΞϓϦέʔγϣϯͷྲྀΕ ᶅϧʔςΟϯάॲཧ ਖ਼نදݱͷʮΩϟϓνϟʯͰϚονͨ͠஋ͱϧʔςΟϯά Λൺֱ͍ͯ͠Δ ᶄ(&5Ͱ IUUQFYBNQMFDPNQPTUT΁ϦΫΤετ͢Δ

Slide 65

Slide 65 text

1)1Ͱࣗ࡞.7$ϑϨʔϜϫʔΫΛࣗ࡞͢Δ /** * * PATH_INFOͷ৘ใΛड͚औΓɺϚονͨ͠৔߹ʹarray_mergeͰ$matchesͷத਎Λ$paramsʹϚʔδͯ͠ฦ͢ * * @param $path_info * @return array|bool */ public function resolve($path_info) { if(substr($path_info,0,1) !== '/'){ $path_info = '/'.$path_info; } foreach ($this->router as $pattern => $params) { if(preg_match('#^'.$pattern.'$#', $path_info, $matches)){ $params = array_merge($params,$matches); return $params; } } return false; } 3PVUFSQIQ

Slide 66

Slide 66 text

%C3FQPTJUPSZ 1)1Ͱࣗ࡞.7$ϑϨʔϜϫʔΫΛࣗ࡞͢Δ 3FRVFTU 3PVUFS $POUSPMMFS %C.BOBHFS 7JFX 3FTQPOTF "QQMJDBUJPO $POUSPMMFS શମͷΞϓϦέʔγϣϯͷྲྀΕ '/posts' => ['controller' => 'post', 'action' => 'posts'],

Slide 67

Slide 67 text

%C3FQPTJUPSZ 1)1Ͱࣗ࡞.7$ϑϨʔϜϫʔΫΛࣗ࡞͢Δ 3FRVFTU 3PVUFS $POUSPMMFS %C.BOBHFS 7JFX 3FTQPOTF "QQMJDBUJPO $POUSPMMFS ᶆ$POUSPMMFS ϧʔςΟϯάͰܾΊΒΕͯͨ1PTU$POUSPMMFSΛݺͼग़ͯ͠ QPTUT"DUJPO ϝιου Λ࣮ߦ͢Δɻ '/posts' => ['controller' => 'post', 'action' => 'posts'], શମͷΞϓϦέʔγϣϯͷྲྀΕ

Slide 68

Slide 68 text

1)1Ͱࣗ࡞.7$ϑϨʔϜϫʔΫΛࣗ࡞͢Δ // ౤ߘઌҰཡΛऔಘ͢Δ public function postsAction() { $posts = $this->db_manager ->get('Post') ->fetchAllPosts(); return $this->render( [ 'posts' => $posts ] ); } 1PTU$POUSPMMFSQIQ

Slide 69

Slide 69 text

1)1Ͱࣗ࡞.7$ϑϨʔϜϫʔΫΛࣗ࡞͢Δ 3FRVFTU 3PVUFS $POUSPMMFS %C.BOBHFS 7JFX 3FTQPOTF "QQMJDBUJPO %C.BOBHFS ᶇ%#΁઀ଓΛߦ͏ %C3FQPTJUPSZ $POUSPMMFS શମͷΞϓϦέʔγϣϯͷྲྀΕ

Slide 70

Slide 70 text

1)1Ͱࣗ࡞.7$ϑϨʔϜϫʔΫΛࣗ࡞͢Δ 3FRVFTU 3PVUFS $POUSPMMFS %C.BOBHFS 7JFX 3FTQPOTF "QQMJDBUJPO %C.BOBHFS %C3FQPTJUPSZ $POUSPMMFS ᶇ%#΁ΞΫηεΛߦ͏ %# શମͷΞϓϦέʔγϣϯͷྲྀΕ

Slide 71

Slide 71 text

1)1Ͱࣗ࡞.7$ϑϨʔϜϫʔΫΛࣗ࡞͢Δ 3FRVFTU 3PVUFS $POUSPMMFS %C.BOBHFS 7JFX 3FTQPOTF "QQMJDBUJPO %C.BOBHFS %C3FQPTJUPSZ $POUSPMMFS %# ᶇ%#͔ΒσʔλΛऔಘ͢Δ શମͷΞϓϦέʔγϣϯͷྲྀΕ

Slide 72

Slide 72 text

1)1Ͱࣗ࡞.7$ϑϨʔϜϫʔΫΛࣗ࡞͢Δ 3FRVFTU 3PVUFS $POUSPMMFS %C.BOBHFS 7JFX 3FTQPOTF "QQMJDBUJPO %C3FQPTJUPSZ ᶈ%#͔Βऔಘͨ͠σʔλ Λ7JFXʹ౉͢ 7JFX $POUSPMMFS શମͷΞϓϦέʔγϣϯͷྲྀΕ

Slide 73

Slide 73 text

1)1Ͱࣗ࡞.7$ϑϨʔϜϫʔΫΛࣗ࡞͢Δ // ౤ߘઌҰཡΛऔಘ͢Δ public function postsAction() { $posts = $this->db_manager ->get('Post') ->fetchAllPosts(); return $this->render( [ 'posts' => $posts ] ); } 1PTU$POUSPMMFSQIQ

Slide 74

Slide 74 text

1)1Ͱࣗ࡞.7$ϑϨʔϜϫʔΫΛࣗ࡞͢Δ 3FRVFTU 3PVUFS $POUSPMMFS %C.BOBHFS 7JFX 3FTQPOTF "QQMJDBUJPO %C3FQPTJUPSZ ᶉ7JFXଆͰදࣔ͢ΔIUNM ϑΝΠϧΛੜ੒͢Δ $POUSPMMFS 7JFX શମͷΞϓϦέʔγϣϯͷྲྀΕ

Slide 75

Slide 75 text

ݟग़͕͠ೖΓ·͢ public function renderView($_path, $_variables = [ ], $_layout = false) { $_file = $this->base_dir . '/' . $_path . '.php'; extract(array_merge($this->defaults, $_variables)); // Ξ΢τϓοτόοϑΝϦά։࢝ ob_start(); // όοϑΝΛ௒͑ͨ৔߹ʹࣗಈͰϑϥογϡ͢ΔઃఆΛOFFʹ͢Δ ob_implicit_flush(0); // viewϑΝΠϧಡΈࠐΉ require $_file; // $contentʹόοϑΝͨ͠஋ΛೖΕ͍ͯ͘ $content = ob_get_clean(); if ($_layout) { $content = $this->renderView($_layout, array_merge($this->layout_variables, array( '_content' => $content, ) )); } return $content; } 7JFXQIQ

Slide 76

Slide 76 text

1)1Ͱࣗ࡞.7$ϑϨʔϜϫʔΫΛࣗ࡞͢Δ 3FRVFTU 3PVUFS $POUSPMMFS %C.BOBHFS 7JFX 3FTQPOTF "QQMJDBUJPO %C3FQPTJUPSZ 3FTQPOTF ᶊΫϥΠΞϯτଆʹ ʮIUUQFYBNQMFDPNQPTUTʯͷը໘Λ Ϩεϙϯεͱͯ͠ฦ͢ શମͷΞϓϦέʔγϣϯͷྲྀΕ

Slide 77

Slide 77 text

1)1Ͱࣗ࡞.7$ϑϨʔϜϫʔΫΛࣗ࡞͢Δ 3FRVFTU 3PVUFS $POUSPMMFS %C.BOBHFS 7JFX 3FTQPOTF "QQMJDBUJPO %C3FQPTJUPSZ .PEFM૚ $POUSPMMFS૚ 7JFX૚ .7$ύλʔϯ

Slide 78

Slide 78 text

1)1Ͱࣗ࡞.7$ϑϨʔϜϫʔΫΛࣗ࡞͢Δ .7$ύλʔϯͷϑϨʔϜϫʔΫΛ࣮૷Ͱ͖ͨ

Slide 79

Slide 79 text

·ͱΊ 1)1Ͱࣗ࡞.7$ϑϨʔϜϫʔΫΛࣗ࡞͢Δ

Slide 80

Slide 80 text

1)1Ͱࣗ࡞.7$ϑϨʔϜϫʔΫΛࣗ࡞͢Δ .7$ϑϨʔϜϫʔΫΛ࡞ͬͯΈͨ·ͱΊ ɾ ָ͍ͬ͠ʜ ɾ ࣗ෼Ͱ޷͖ͳػೳΛ͙͢ʹ෇͚ΕΔສೳײ ͜Ε͕ΦϨΦϨͷັྗͬʂ ɾΦʔτϩʔυ΍ਖ਼نදݱʹΑΔϧʔςΟϯάॲཧ΍7JFXͰͷ ϨϯμϦϯάͷ࢓૊Έ͕ཧղͰ͖ͨ ɾ໊લղܾ͕ॏཁ ɾΦϒδΣΫτࢦ޲ͷษڧͷ୊ࡐʹྑ͍͔΋

Slide 81

Slide 81 text

1)1Ͱࣗ࡞.7$ϑϨʔϜϫʔΫΛࣗ࡞͢Δ .7$ϑϨʔϜϫʔΫΛ࡞Δ্Ͱࣄલʹ͋Δͱྑͦ͞͏஌ࣝ ɾ1)14UPSNΛ࢖ͬͯ։ൃ͢Δͷ͕͓קΊɻ ɾFWBM a1TZaTI ɾσόοάେࣄɻ ɾIUUQTQTZTIPSH ɾςετίʔυ ɾୈষͰ࡞ͬͨ'8Λݕূ͢Δͷ͕ΞϓϦέʔγϣϯΛ࡞͔ͬͯΒ ͳͷͰ؆୯ͳςετίʔυΛࣄલʹ࡞͓ͬͯ͘ͱΑΓ࡞Γ΍͍͢Ͱ ͢ɻ

Slide 82

Slide 82 text

1)1Ͱࣗ࡞.7$ϑϨʔϜϫʔΫΛࣗ࡞͢Δ .7$ϑϨʔϜϫʔΫΛ࡞Δ্Ͱࣄલʹ͋Δͱྑͦ͞͏஌ࣝ public function test_resolve() { $pathInfo = 'user/:id'; $params = $this->routes->resolve($pathInfo); assertEquals('user',$params['controller']); assertEquals('edit',$params['action']); assertEquals(':id',$params['id']); assertEquals('/user/:id',$params['0']); assertEquals('/;id',$params['1']); }

Slide 83

Slide 83 text

ୈҰষ׬ ͜͜·Ͱ෼͙Β͍ 1)1Ͱࣗ࡞.7$ϑϨʔϜϫʔΫΛࣗ࡞͢Δ

Slide 84

Slide 84 text

ࠓ೔͓࿩͍ͨ͠ࣄ ൃද಺༰ͷഎܠ 1)1Ͱ.7$ϑϨʔϜϫʔΫΛࣗ࡞ͯ͠ΈΔ -BSBWFMͷΞʔΩςΫνϟΛֶͼɺࣗ࡞'8ͱൺֱͯ͠ΈΔ ·ͱΊ

Slide 85

Slide 85 text

-BSBWFMͷΞʔΩςΫνϟΛֶͼɺࣗ࡞'8ͱൺֱͯ͠ΈΔ

Slide 86

Slide 86 text

·ͣ͸-BSBWFMͰ࢖ΘΕ͍ͯΔجຊతͳΞʔΩςΫνϟΛֶͿ -BSBWFMͷΞʔΩςΫνϟΛֶͼɺࣗ࡞'8ͱൺֱͯ͠ΈΔ

Slide 87

Slide 87 text

ɾ%FQFOEFODZ*OKFDUJPO ɾ%*ίϯςφ ɾαʔϏείϯςφ ɾϑΝαʔυ -BSBWFMͷΞʔΩςΫνϟΛֶͼɺࣗ࡞'8ͱൺֱͯ͠ΈΔ

Slide 88

Slide 88 text

%FQFOEFODZ*OKFDUJPOͱ͸ ґଘੑͷ஫ೖ -BSBWFMͷΞʔΩςΫνϟΛֶͼɺࣗ࡞'8ͱൺֱͯ͠ΈΔ

Slide 89

Slide 89 text

%FQFOEFODZ*OKFDUJPOͱ͸ Θ͔ΓͣΒ͍ -BSBWFMͷΞʔΩςΫνϟΛֶͼɺࣗ࡞'8ͱൺֱͯ͠ΈΔ

Slide 90

Slide 90 text

%FQFOEFODZ*OKFDUJPOͱ͸ class User { protected $service; public function __construct() { $this->service = new Service(); } public function doSomething() { $this->service->sayHi(); } } Class Service { public function sayHi() { echo 'Hi!'; } -BSBWFMͷΞʔΩςΫνϟΛֶͼɺࣗ࡞'8ͱൺֱͯ͠ΈΔ

Slide 91

Slide 91 text

%FQFOEFODZ*OKFDUJPOͱ͸ class User { protected $service; public function __construct() { $this->service = new Service(); } public function doSomething() { $this->service->sayHi(); } } Class Service { public function sayHi() { echo 'Hi!'; } 6TFSΫϥε಺Ͱ4FSWJDFΦϒδΣΫτ͕ੜ੒͞Ε͍ͯΔ -BSBWFMͷΞʔΩςΫνϟΛֶͼɺࣗ࡞'8ͱൺֱͯ͠ΈΔ

Slide 92

Slide 92 text

%FQFOEFODZ*OKFDUJPOͱ͸ class User { protected $service; public function __construct() { $this->service = new Service(); } public function doSomething() { $this->service->sayHi(); } } Class Service { public function sayHi() { echo 'Hi!'; } 6TFSΫϥε಺Ͱ4FSWJDFΦϒδΣΫτ͕ੜ੒͞Ε͍ͯΔ 6TFSΫϥε͸4FSWJDFΦϒδΣΫτʹґଘ͍ͯ͠Δ -BSBWFMͷΞʔΩςΫνϟΛֶͼɺࣗ࡞'8ͱൺֱͯ͠ΈΔ

Slide 93

Slide 93 text

%FQFOEFODZ*OKFDUJPOͱ͸ %*Λͯ͠ͳ͍ύλʔϯͰͷ໰୊ ɾ6TFSΫϥε͸4FSWJDFΫϥε͕ग़དྷΔ·ͰΦϒδΣΫτ͕ੜ੒Ͱ͖ͳ͍ ɾ6TFSΫϥεͰͷ୯ମͷςετΛ͢Δ౓ʹ4FSWJDFΦϒδΣΫτΛ ຖճੜ੒͠ͳ͚Ε͹ͳΒͳ͍ ɾ4FSWJDFΦϒδΣΫτ͔ΒผͷʓʓΦϒδΣΫτʹม͑Δ౓ʹ 6TFSΫϥε͸มߋ͠ͳ͚Ε͹ͳΒͳ͍ -BSBWFMͷΞʔΩςΫνϟΛֶͼɺࣗ࡞'8ͱൺֱͯ͠ΈΔ

Slide 94

Slide 94 text

%FQFOEFODZ*OKFDUJPOͱ͸ ղܾࡦ ಺෦ͰΦϒδΣΫτΛੜ੒͢ΔͷͰ͸ͳ͘ ֎෦͔ΒΦϒδΣΫτΛ౉ͯ͋͛͠Δ -BSBWFMͷΞʔΩςΫνϟΛֶͼɺࣗ࡞'8ͱൺֱͯ͠ΈΔ

Slide 95

Slide 95 text

%FQFOEFODZ*OKFDUJPOͱ͸ service = $service; } public function doSomething() { $this->service->sayHi(); } } Class Service { public function sayHi() { echo 'Hi!'; } } ίϯετϥΫλੜ੒࣌ʹ֎෦͔ΒඞཁͳΦϒδΣΫτΛ஫ೖ͢Δ $POTUSVDUPS*OKFDUJPO -BSBWFMͷΞʔΩςΫνϟΛֶͼɺࣗ࡞'8ͱൺֱͯ͠ΈΔ

Slide 96

Slide 96 text

%FQFOEFODZ*OKFDUJPOͱ͸ $service = new Service(); $user = new User($service); $user->doSomething(); ίϯετϥΫλੜ੒࣌ʹ֎෦͔ΒඞཁͳΦϒδΣΫτΛ஫ೖ͢Δ -BSBWFMͷΞʔΩςΫνϟΛֶͼɺࣗ࡞'8ͱൺֱͯ͠ΈΔ

Slide 97

Slide 97 text

%FQFOEFODZ*OKFDUJPOͱ͸ ɾந৅ʹґଘͤ͞Δڞ௨ͷΠϯλʔϑΣΠεΛ΋ͨͤΔ ಺෦ͰΦϒδΣΫτΛੜ੒͢ΔͷͰ͸ͳ͘ ֎෦͔ΒΦϒδΣΫτΛ౉ͯ͋͛͠Δ -BSBWFMͷΞʔΩςΫνϟΛֶͼɺࣗ࡞'8ͱൺֱͯ͠ΈΔ ղܾࡦ

Slide 98

Slide 98 text

%FQFOEFODZ*OKFDUJPOͱ͸ class User { protected $service; public function __construct(ServiceInterface $service) { $this->service = $service; } public function doSomething() { $this->service->sayHi(); } } interface ServiceInterface { public function sayHi(); } Class HogeService implements ServiceInterface { public function sayHi() { echo 'Hi! Hoge!'; } } Class FugaService implements ServiceInterface { public function sayHi() { echo 'Hi! Fuga'; } } ڞ௨ͷ4FSWJDF*OUFSGBDFΛ࡞੒͢Δ -BSBWFMͷΞʔΩςΫνϟΛֶͼɺࣗ࡞'8ͱൺֱͯ͠ΈΔ

Slide 99

Slide 99 text

%FQFOEFODZ*OKFDUJPOͱ͸ class User { protected $service; public function __construct(ServiceInterface $service) { $this->service = $service; } public function doSomething() { $this->service->sayHi(); } } interface ServiceInterface { public function sayHi(); } Class HogeService implements ServiceInterface { public function sayHi() { echo 'Hi! Hoge!'; } } Class FugaService implements ServiceInterface { public function sayHi() { echo 'Hi! Fuga'; } } ֤ΫϥεͰ4FSWJDF*OUFSGBDFΛ࣮૷͢Δ -BSBWFMͷΞʔΩςΫνϟΛֶͼɺࣗ࡞'8ͱൺֱͯ͠ΈΔ

Slide 100

Slide 100 text

class User { protected $service; public function __construct(ServiceInterface $service) { $this->service = $service; } public function doSomething() { $this->service->sayHi(); } } interface ServiceInterface { public function sayHi(); } Class HogeService implements ServiceInterface { public function sayHi() { echo 'Hi! Hoge!'; } } Class FugaService implements ServiceInterface { public function sayHi() { echo 'Hi! Fuga'; } } ServiceInterfaceΛλΠϓώϯτͤͯ͞ $POTUSVDUPS*OKFDUJPOͤ͞Δ -BSBWFMͷΞʔΩςΫνϟΛֶͼɺࣗ࡞'8ͱൺֱͯ͠ΈΔ %FQFOEFODZ*OKFDUJPOͱ͸

Slide 101

Slide 101 text

%FQFOEFODZ*OKFDUJPOͱ͸ // HogeService $service = new HogeService(); $user = new User($service); $user->doSomething(); #Hi! Hoge! // FugaService $service = new FugaService(); $user = new User($service); $user->doSomething(); #Hi! Fuga ֎෦͔Βґଘ͢ΔΦϒδΣΫτ஫ೖ͚ͩͰྑ͍ʂ ݩͷ6TFSΫϥεʹมߋ͸ى͖ͳ͍ -BSBWFMͷΞʔΩςΫνϟΛֶͼɺࣗ࡞'8ͱൺֱͯ͠ΈΔ

Slide 102

Slide 102 text

%FQFOEFODZ*OKFDUJPOͱ͸ ґଘੑͷ஫ೖ ඞཁͳΦϒδΣΫτ Λ֎෦͔Β஫ೖ͢Δ -BSBWFMͷΞʔΩςΫνϟΛֶͼɺࣗ࡞'8ͱൺֱͯ͠ΈΔ

Slide 103

Slide 103 text

%*׬શʹཧղͨ͠ -BSBWFMͷΞʔΩςΫνϟΛֶͼɺࣗ࡞'8ͱൺֱͯ͠ΈΔ

Slide 104

Slide 104 text

ɾ%FQFOEFODZ*OKFDUJPO ɾ%*ίϯςφ ɾαʔϏείϯςφ ɾϑΝαʔυ -BSBWFMͷΞʔΩςΫνϟΛֶͼɺࣗ࡞'8ͱൺֱͯ͠ΈΔ

Slide 105

Slide 105 text

%*ίϯςφͱ͸ // HogeService $service = new HogeService(); $user = new User($service); $user->doSomething(); ͭͱ͔ͩͬͨΒ·ͩࠔΒͳ͍ -BSBWFMͷΞʔΩςΫνϟΛֶͼɺࣗ࡞'8ͱൺֱͯ͠ΈΔ

Slide 106

Slide 106 text

%*ίϯςφͱ͸ $service1 = new Service1(); $service2 = new Service2(); $service3 = new Service3(); $user = new User($service1,$service2,$service3); $user->doSomething(); ֎෦͔Β஫ೖ͢ΔΦϒδΣΫτ͕ଟ͗ͯ͢ɺґଘؔ܎ ͕ෳࡶʹͳΓੜ੒͕େมʹͳͬͯ͘Δ -BSBWFMͷΞʔΩςΫνϟΛֶͼɺࣗ࡞'8ͱൺֱͯ͠ΈΔ

Slide 107

Slide 107 text

%*ίϯςφͱ͸ %*ίϯςφ͸͜ͷ໰୊ΛҎԼͷํ๏Ͱղܾͤ͞Δπʔϧ -BSBWFMͷΞʔΩςΫνϟΛֶͼɺࣗ࡞'8ͱൺֱͯ͠ΈΔ

Slide 108

Slide 108 text

%*ίϯςφͱ͸ %*ίϯςφ͸͜ͷ໰୊ΛҎԼͷํ๏Ͱղܾͤ͞Δπʔϧ %*ίϯςφͰΦϒδΣΫτੜ੒ͷํ๏ΛࣄલʹܾΊ͓ͯ͘ ΠϯελϯεΛ%*ίϯςφଆ͔Βऔಘ͢Δ -BSBWFMͷΞʔΩςΫνϟΛֶͼɺࣗ࡞'8ͱൺֱͯ͠ΈΔ

Slide 109

Slide 109 text

use Pimple\Container; $container = new Container(); $container['service1'] = function($c){ return new Service1(); }; $container['service2'] = function ($c){ return new Service2(); }; $container['service3'] = function ($c){ return new Service3(); }; $container['user'] = function($c) { return new User($c['service1'], $c['service2'], $c['service3']); }; ࣄલʹΠϯελϯεͷੜ੒ํ๏Λొ࿥͓ͯ͘͠ -BSBWFMͷΞʔΩςΫνϟΛֶͼɺࣗ࡞'8ͱൺֱͯ͠ΈΔ

Slide 110

Slide 110 text

use Pimple\Container; $container = new Container(); $container['service1'] = function($c){ return new Service1(); }; $container['service2'] = function ($c){ return new Service2(); }; $container['service3'] = function ($c){ return new Service3(); }; $container['user'] = function($c) { return new User($c['service1'], $c['service2'], $c['service3']); }; Πϯελϯεੜ੒࣌ʹґଘؔ܎Λղܾͤ͞ΔΑ͏ʹ͢Δ -BSBWFMͷΞʔΩςΫνϟΛֶͼɺࣗ࡞'8ͱൺֱͯ͠ΈΔ

Slide 111

Slide 111 text

%*ίϯςφͱ͸ $service1 = new Service1(); $service2 = new Service2(); $service3 = new Service3(); $user = new User($service1,$service2,$service3); $user->doSomething(); #FGPSF -BSBWFMͷΞʔΩςΫνϟΛֶͼɺࣗ࡞'8ͱൺֱͯ͠ΈΔ

Slide 112

Slide 112 text

%*ίϯςφͱ͸ //$service1 = new Service1(); //$service2 = new Service2(); //$service3 = new Service3(); // //$user = new User($service1,$service2,$service3); $user = $container['user']; $user->doSomething(); "GUFS -BSBWFMͷΞʔΩςΫνϟΛֶͼɺࣗ࡞'8ͱൺֱͯ͠ΈΔ

Slide 113

Slide 113 text

%*ίϯςφͱ͸ ɾΠϯελϯεੜ੒͔ΒखಈͰ$POTUSVDUPS*OKFDUJPO͍ͯͨ͠εςοϓ͕ ͨͬͨߦʹͳͬͨʂʂʂ ཪଆͰ͸%*ίϯςφͰΦϒδΣΫτΛ؅ཧ͍ͯ͠Δҝ ɾ%*ίϯςφʹΠϯελϯεͷੜ੒ํ๏Λొ࿥͠ͱ͍ͨͷͰɺ%*ίϯςφ ܦ༝ͰΠϯελϯεΛͲ͔͜ΒͰ΋ݺͼग़͢ࣄ͕Ͱ͖Δ ґଘؔ܎͸ີด͞Εͨঢ়ଶ -BSBWFMͷΞʔΩςΫνϟΛֶͼɺࣗ࡞'8ͱൺֱͯ͠ΈΔ

Slide 114

Slide 114 text

͜͜·Ͱͷ·ͱΊ %FQFOEFODZ*OKFDUJPOͱ͸ ඞཁͳΦϒδΣΫτΛ֎෦͔Β஫ೖ͢Δ σβΠϯύλʔϯͷͭ %*ίϯςφͱ͸ ࣄલʹΦϒδΣΫτͷੜ੒ํ๏Λొ࿥͓ͯ͘͠ ࣄͰɺґଘؔ܎ͷղܾͱΦϒδΣΫτͷੜ੒Λ ಉ࣌ʹߦͬͯ͘ΕΔπʔϧ -BSBWFMͷΞʔΩςΫνϟΛֶͼɺࣗ࡞'8ͱൺֱͯ͠ΈΔ

Slide 115

Slide 115 text

%*ίϯςφ׬શʹཧղͨ͠ -BSBWFMͷΞʔΩςΫνϟΛֶͼɺࣗ࡞'8ͱൺֱͯ͠ΈΔ

Slide 116

Slide 116 text

Ͱ͸ɺαʔϏείϯςφͱ͸ʁ -BSBWFMͷΞʔΩςΫνϟΛֶͼɺࣗ࡞'8ͱൺֱͯ͠ΈΔ

Slide 117

Slide 117 text

αʔϏείϯςφͱ͸ -BSBWFMͰఏڙ͍ͯ͠Δ%*ίϯςφ -BSBWFMͷΞʔΩςΫνϟΛֶͼɺࣗ࡞'8ͱൺֱͯ͠ΈΔ

Slide 118

Slide 118 text

αʔϏείϯςφͱ͸ -BSBWFMͰఏڙ͍ͯ͠Δ%*ίϯςφ -BSBWFMͷΞʔΩςΫνϟΛֶͼɺࣗ࡞'8ͱൺֱͯ͠ΈΔ

Slide 119

Slide 119 text

αʔϏείϯςφͱ͸ -BSBWFMͰఏڙ͍ͯ͠Δ%*ίϯςφ Πϯελϯεͷੜ੒ํ๏Λొ࿥͢ΔˠCJOECJOEJOH ࢦఆ͞ΕͨΠϯελϯεΛ αʔϏείϯςφ͕ੜ੒ͯ͠ฦ͢ˠSFTPMWFSFTPMWJOH -BSBWFMͷΞʔΩςΫνϟΛֶͼɺࣗ࡞'8ͱൺֱͯ͠ΈΔ

Slide 120

Slide 120 text

αʔϏείϯςφͱ͸ ྫ TJOHMFUPOϝιου αʔϏείϯςφͰΠϯελϯεͷੜ੒ํ๏Λొ࿥͓ͯ͘͠ͱɺ͔࣍ΒΩϟογϡ ͞ΕͨΠϯελϯε͕ฦ͞Ε·͢ɻ $container->singleton('TwitterClient',function() { return new TwitterClient(); }); $tweet1 = $container->make('TwitterClient'); $tweet2 = $container->make('TwitterClient'); if($tweet1 === $tweet2){ echo 'true'; #true } -BSBWFMͷΞʔΩςΫνϟΛֶͼɺࣗ࡞'8ͱൺֱͯ͠ΈΔ

Slide 121

Slide 121 text

͜͜·Ͱͷ·ͱΊ αʔϏείϯςφͱ͸ -BSBWFM͕ఏڙ͢Δ%*ίϯςφ πʔϧ Πϯελϯεͷੜ੒ํ๏ CJOE ΍αʔϏείϯ ςφ͔ΒΠϯελϯεΛऔಘ SFTPMWF ͢Δଟ࠼ ͳػೳΛఏڙ͢Δɻ -BSBWFMͷΞʔΩςΫνϟΛֶͼɺࣗ࡞'8ͱൺֱͯ͠ΈΔ

Slide 122

Slide 122 text

ɾ%FQFOEFODZ*OKFDUJPO ɾ%*ίϯςφ ɾαʔϏείϯςφ ɾϑΝαʔυ -BSBWFMͷΞʔΩςΫνϟΛֶͼɺࣗ࡞'8ͱൺֱͯ͠ΈΔ

Slide 123

Slide 123 text

ϑΝαʔυͱ͸ ɾfacades !== facade pattern -BSBWFMͷΞʔΩςΫνϟΛֶͼɺࣗ࡞'8ͱൺֱͯ͠ΈΔ

Slide 124

Slide 124 text

ϑΝαʔυͱ͸ 3FTQPOTF%PO`U6TF'BDBEFT -BSBWFMͷΞʔΩςΫνϟΛֶͼɺࣗ࡞'8ͱൺֱͯ͠ΈΔ

Slide 125

Slide 125 text

ϑΝαʔυͱ͸ ʲ຋༁ʳ%PO`U6TF'BDBEFTʹର͢Δճ౴ ϑΝαʔυ͸ɺαʔϏεͷ৔ॴΛදͨ͢Ίͷ౶ҥߏจ TZOUBDUJDTVHB Ͱ͋ΔͨΊ؆୯ ʹͲ͔͜ΒͰ΋ݺͼग़͢ࣄ͕Ͱ͖·͢ɻϑΝαʔυΛݺͼग़͢ͱɺϑΝαʔυ͸-BSBWFMͷ αʔϏείϯςφ͔ΒجૅͱͳΔΫϥεղܾ͠ɺΠϯελϯε্Ͱ໨తͷϝιουΛݺͼ ग़͠·͢ɻςετίʔυ͕ॻ͖΍͍͢ػೳΛఏڙͭͭ͠ɺඇৗʹ؆ܿͰදݱྗͷ͋Δػೳ Λఏڙ͠·͢ɻ -BSBWFMͷΞʔΩςΫνϟΛֶͼɺࣗ࡞'8ͱൺֱͯ͠ΈΔ

Slide 126

Slide 126 text

ϑΝαʔυͱ͸ ʲ຋༁ʳ%PO`U6TF'BDBEFTʹର͢Δճ౴ ϑΝαʔυ͸ɺαʔϏεͷ৔ॴΛදͨ͢Ίͷ౶ҥߏจ TZOUBDUJDTVHB Ͱ͋ΔͨΊ؆୯ ʹͲ͔͜ΒͰ΋ݺͼग़͢ࣄ͕Ͱ͖·͢ɻϑΝαʔυΛݺͼग़͢ͱɺϑΝαʔυ͸-BSBWFM ͷαʔϏείϯςφ͔ΒجૅͱͳΔΫϥεղܾ͠ɺΠϯελϯε্Ͱ໨తͷϝιουΛݺ ͼग़͠·͢ɻςετίʔυ͕ॻ͖΍͍͢ػೳΛఏڙͭͭ͠ɺඇৗʹ؆ܿͰදݱྗͷ͋Δػ ೳΛఏڙ͠·͢ɻ -BSBWFMͷΞʔΩςΫνϟΛֶͼɺࣗ࡞'8ͱൺֱͯ͠ΈΔ

Slide 127

Slide 127 text

ΜɺαʔϏείϯςφʁ ϑΝαʔυͱ͸ -BSBWFMͷΞʔΩςΫνϟΛֶͼɺࣗ࡞'8ͱൺֱͯ͠ΈΔ

Slide 128

Slide 128 text

ϑΝαʔυͱ͸ $debug = \Config::get(‘app.debug’); ᶃϑΝαʔυΫϥε $POpH ͷղܾ ˣ ᶄϑΝαʔυΫϥεͷΫϥεϝιου࣮ߦ ˣ ᶅαʔϏείϯςφ͔ΒΠϯελϯεऔಘ ˣ ᶆΠϯελϯεϝιουͷ࣮ߦ -BSBWFMͷΞʔΩςΫνϟΛֶͼɺࣗ࡞'8ͱൺֱͯ͠ΈΔ

Slide 129

Slide 129 text

ϑΝαʔυͱ͸ ΫϥεϝιουܗࣜͰͲ͔͜ΒͰ΋Πϯελϯεϝιου ݺͼग़ͤΔػೳ ɾ3FRVFTU ɾ$POpH ɾ$BDIF ɾ ɾ ɾ -BSBWFMͷΞʔΩςΫνϟΛֶͼɺࣗ࡞'8ͱൺֱͯ͠ΈΔ

Slide 130

Slide 130 text

׬શʹཧղͨ͠ -BSBWFMͷΞʔΩςΫνϟΛֶͼɺࣗ࡞'8ͱൺֱͯ͠ΈΔ

Slide 131

Slide 131 text

ͱ͍͏ࣄͰʜ -BSBWFMͷΞʔΩςΫνϟΛֶͼɺࣗ࡞'8ͱൺֱͯ͠ΈΔ

Slide 132

Slide 132 text

೥ ੈք͸-BSBWFMʹแ·Ε͍ͯͨ ओʹQIQFSք۾Ͱ -BSBWFMͷΞʔΩςΫνϟΛֶͼɺࣗ࡞'8ͱൺֱͯ͠ΈΔ

Slide 133

Slide 133 text

3FRVFTU 3PVUFS $POUSPMMFS %C.BOBHFS 7JFX 3FTQPOTF "QQMJDBUJPO %C3FQPTJUPSZ .PEFM૚ $POUSPMMFS૚ 7JFX૚ .7$ύλʔϯ Y೥ -BSBWFMͷΞʔΩςΫνϟΛֶͼɺࣗ࡞'8ͱൺֱͯ͠ΈΔ

Slide 134

Slide 134 text

3FRVFTU 3PVUFS $POUSPMMFS 7JFX 3FTQPOTF -BSBWFM .PEFM .PEFM૚ $POUSPMMFS૚ 7JFX૚ -BSBWFMͷ.7$ύλʔϯ ೥ -BSBWFMͷΞʔΩςΫνϟΛֶͼɺࣗ࡞'8ͱൺֱͯ͠ΈΔ

Slide 135

Slide 135 text

Կ͕มΘͬͨͷ͔ -BSBWFMͷΞʔΩςΫνϟΛֶͼɺࣗ࡞'8ͱൺֱͯ͠ΈΔ

Slide 136

Slide 136 text

3FRVFTU 3PVUFS $POUSPMMFS 7JFX 3FTQPOTF -BSBWFM .PEFM .PEFM૚ $POUSPMMFS૚ 7JFX૚ -BSBWFMͷ.7$ύλʔϯ ೥ facades -BSBWFMͷΞʔΩςΫνϟΛֶͼɺࣗ࡞'8ͱൺֱͯ͠ΈΔ

Slide 137

Slide 137 text

֤ػೳ͕ϑΝαʔυͰݺ͹Ε͍ͯΔʂ ϑΝαʔυ͸αʔϏείϯςφܦ༝ͰΠϯελ ϯεΛݺͼग़͢ҝͲ͔͜ΒͰ΋࣮ߦՄೳ ґଘؔ܎Λղܾͯ͠ૄ݁߹ʹͯ͘͠ΕΔ ςετ͕ॻ͖΍͍͢ʂ֦ு͠΍͍͢ʂ -BSBWFMͷΞʔΩςΫνϟΛֶͼɺࣗ࡞'8ͱൺֱͯ͠ΈΔ

Slide 138

Slide 138 text

-BSBWFMͷΞʔΩςΫνϟΛֶͼɺࣗ࡞'8ͱൺֱͯ͠ΈΔ ϑΝαʔυ͍͍͡ΌΜʂ

Slide 139

Slide 139 text

ϑΝαʔυ͍͍͡ΌΜʂ -BSBWFMͷΞʔΩςΫνϟΛֶͼɺࣗ࡞'8ͱൺֱͯ͠ΈΔ

Slide 140

Slide 140 text

ϑΝαʔυܯ࡯ʹౖΒΕ·͢ ϑΝαʔυܯ࡯ -BSBWFMͷΞʔΩςΫνϟΛֶͼɺࣗ࡞'8ͱൺֱͯ͠ΈΔ

Slide 141

Slide 141 text

%*ίϯςφͱ͸ ɾΠϯελϯεੜ੒͔ΒखಈͰ$POTUSVDUPS*OKFDUJPO͍ͯͨ͠ εςοϓ͕ͨͬͨߦʹͳͬͨʂʂʂ ཪଆͰ͸%*ίϯςφͰΦϒδΣΫτΛ؅ཧ͍ͯ͠Δҝ ศརͰ͋Δ͕ɺٯʹґଘؔ܎͕෼͔ΓͮΒ͘ͳΔ ɾ%*ίϯςφʹΠϯελϯεͷੜ੒ํ๏Λొ࿥͠ͱ͍ͨͷͰɺ%*ίϯςφ ܦ༝ͰΠϯελϯεΛͲ͔͜ΒͰ΋ݺͼग़͢ࣄ͕Ͱ͖Δ ґଘؔ܎͸ີด͞Εͨঢ়ଶ -BSBWFMͷΞʔΩςΫνϟΛֶͼɺࣗ࡞'8ͱൺֱͯ͠ΈΔ

Slide 142

Slide 142 text

l͔͠͠ͳ͕ΒαʔϏͷ։ൃʹ͓͍ͯ͜Ε͸ѱ͍ઃܭʹಋ͕࣌͋͘Γ·͢ɻ ͨͱ͑͹ɺ͜ͷϑΝαʔυΛ௥Ճ͢Δͷ͸ʮ؆୯ʯͳͷͰɺΫϥεͰ੹຿͕૿͑ΔՄೳੑ͕͋Γ·͢ɻ ҰൠతʹΫϥεΛ࡞Δࡍ͸ɺཧղͷ͠΍͢΍ɺςετɺσόοΫͳͲΛ༏ઌ͢Δҝɺ ੹೚Λूத͠খ͘͞ͳΔΑ͏ʹ࡞Δࣄ͕๬·Ε·͢ɻ 'BDBEFTΛ࢖༻ͯ͠Ωϡʔʹϓογϡ͠ɺిࢠϝʔϧΛૹ৴͠ɺ͢΂ͯͷσʔλΛݕূ͢Δͱݴͬͨ੹຿Λ୯ҰͷΫϥε ΊࠐΉͱɺͦͷΫϥεͷத৺తͳ੹೚͸ෆ໌ྎͰ͢ɻ ͦΕ͸΍Γ͗ͩ͢ͱ৺഑͍ͯ͠·͢ɻz ʲ຋༁ʳ%PO`U6TF'BDBEFTʹର͢Δճ౴ -BSBWFMͷΞʔΩςΫνϟΛֶͼɺࣗ࡞'8ͱൺֱͯ͠ΈΔ

Slide 143

Slide 143 text

·ͱΊ -BSBWFMͰఏڙ͍ͯ͠ΔػೳͷݩΛΈΕ͹αʔϏείϯςφͰ ศརͳػೳΛΫϥεϝιουͰݺͼग़ͤΔ࢓૊ΈΛఏڙ͍ͯ͠Δ ϑϨʔϜϫʔΫͱ͍͏ࣄΛվΊͯೝࣝͨ͠ ͔͠͠ɺϑΝαʔυ͸Ͳ͜Ͱ΋ར༻Ͱ͖Δ͕ނʹෳࡶʹͳΓқ͍ -BSBWFMͷجຊతͳΞʔΩςΫνϟͰ͋Δ %*ɺαʔϏείϯςφ %*ίϯςφ ɺ'BDBEFTΛཧղͨ͠

Slide 144

Slide 144 text

·ͱΊ

Slide 145

Slide 145 text

ͳͥ-BSBWFMͷΞʔΩςΫνϟΛֶͿͷ͔ ཧ༝ )PX खஈ Ͱ͸ͳ͘8IZ ຊ࣭ Λशಘ͔ͨͬͨ͠ ·ͱΊ

Slide 146

Slide 146 text

)PX खஈ Ͱ͸ͳ͘ɺ8IZ ຊ࣭ ΛֶͿࣄ͸ ݴޠ΍ಛఆͷϑϨʔϜϫʔΫʹґଘ͠ͳ͍ҝࠓޙͷΞϓϦέʔγϣϯ։ൃʹ͓͍ͯ ઃܭ͢Δࡍͷྑ͍ࢦඪͱͳΔࣄΛ֬৴ͨ͠ʂ ·ͱΊ

Slide 147

Slide 147 text

ͱ͸͍͑ɺݱ࣮ੈքͰ͸Ϣʔβʹૣ͘Ձ஋Λఏڙ͢Δʹ͸ )PX खஈ ͷ஌ࣝ΋౰વඞ༻ͩͱཧղ͍ͯ͠Δɻ ͔͠͠ɺ8IZ ຊ࣭ Λཧղ͢Δࣄ͸݁Ռతʹ)PX खஈ ͷॿ͚ʹͳΔҝɺ Ϣʔβͷྑ͍Ձ஋Λૣ͘ఏڙ͚ͨ͠Ε͹8IZ ຊ࣭ Λཧղ͢Δࣄ΋ॏཁɻ ·ͱΊ

Slide 148

Slide 148 text

8IZ ຊ࣭ Λ௥͍ٻΊͯɺྑ͍ΤϯδχΞ΁ͷҰา΁ ͱ͸͍͑ɺݱ࣮ੈքͰ͸Ϣʔβʹૣ͘Ձ஋Λఏڙ͢Δʹ͸ )PX खஈ ͷ஌ࣝ΋౰વඞ༻ͩͱཧղ͍ͯ͠Δɻ ͔͠͠ɺ8IZ ຊ࣭ Λཧղ͢Δࣄ͸݁Ռతʹ)PX खஈ ͷॿ͚ʹͳΔҝɺ Ϣʔβͷྑ͍Ձ஋Λૣ͘ఏڙ͚ͨ͠Ε͹8IZ ຊ࣭ Λཧղ͢Δࣄ΋ॏཁɻ ·ͱΊ

Slide 149

Slide 149 text

͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ ϓϩϑΟʔϧGFOEP1SPpMF