Slide 1

Slide 1 text

1)1Ͱ࢝ΊΔܕએݴ &$5&$).&&5*/(
 !SBWFMMM

Slide 2

Slide 2 text

w ࣾ಺Ͱ1)1Yͷػӡ͕ͲΜͲΜߴ·͍ͬͯ·͢ w ॲཧ͕ߴ଎Խ͢Δ͚ͩͰͳ͘ɺͰ͖Δ͜ͱ͕૿͑·͢ w ͦͷதͰ΋ɺ1)1͔Β෇͖߹͍ํ͕มΘΔɾม͑Δ ͱྑ͍֓೦͕͋Γ·͢ w ߴ඼࣭ͳιϑτ΢ΣΞΛ࡞Γ͍ͨɺ1)1Ͱɻ

Slide 3

Slide 3 text

w ൃදͷ಺༰Λ͖ͬͪΓ֮͑Δඞཁ͸ͳ͍Ͱ͢ w ͜ͷ৔ʹ͍Δਓ͕কདྷ1)1ͷίʔυΛॻ͘ͱ͖ʹ
 ʮͦ͏͍͑͹͍͋͋͏ػೳ͕͋ͬͨؾ͕͢Δʯͱ
 ࢥ͍ग़ͯ͠΋Β͑Ε͹े෼ w ػೳͷ࢖͍ํ͸ௐ΂ΒΕΔ͚Ͳ
 ػೳͷଘࡏ͸ೳಈతʹ௥ͬͯΔਓҎ֎ؾ͚ͮͳ͍

Slide 4

Slide 4 text

ࠓճઆ໌͢Δػೳɿܕએݴ

Slide 5

Slide 5 text

class Calculator { public static function pow3(int $n) : int { return $n ** 3; } } try { print Calculator::pow3(3); } catch (TypeError $e) { print "TypeError!"; } // => 27

Slide 6

Slide 6 text

ܕએݴ w ݹ͘͸λΠϓώϯςΟϯάͱ΋ w ϝιου΍ؔ਺ͷҾ਺ɾฦΓ஋ͷܕΛࢦఆ͢Δػೳ w 1)1͔Βଘࡏ͕ͨ͠ɺόʔδϣϯ্͕͕ΔʹͭΕɺ
 ΑΓଟ͘ͷܕ͕ࢦఆͰ͖ΔΑ͏ʹͳͬͨ w ֤όʔδϣϯͰࢦఆͰ͖Δܕʹ͍ͭͯ͸
 υΩϡϝϯτ˞ʹॻ͍ͯ͋Γ·͢ ˞IUUQQIQOFUNBOVBMKBGVODUJPOTBSHVNFOUTQIQGVODUJPOTBSHVNFOUTUZQFEFDMBSBUJPO

Slide 7

Slide 7 text

ܕએݴͷແ͍࣮૷

Slide 8

Slide 8 text

class Calculator { public static function pow3($n) { return $n ** 3; } } print Calculator::pow3(3); // => 27

Slide 9

Slide 9 text

class Calculator { public static function pow3($n) { return $n ** 3; } } print Calculator::pow3("string"); // ???

Slide 10

Slide 10 text

class Calculator { public static function pow3($n) { return $n ** 3; } } print Calculator::pow3("string"); // => 0

Slide 11

Slide 11 text

w จࣈྻΛೖྗͨ͠৔߹ w ֘౰ͷϝιουͰ͸ΤϥʔʹͳΒͳ͍͕ɺ
 ͦ΋ͦ΋๬·͍͠ೖྗͰ͸ͳ͘ɺ݁Ռͷ͸ແҙຯ w ଓ͘ॲཧͰΤϥʔʹͳͬͨͱ͖ɺσόοά͕ࠔ೉ʹ w (BSCBHFJO HBSCBHFPVU w ແҙຯͳೖྗ͔Β͸ແҙຯͳ݁Ռ͕ಘΒΕΔ

Slide 12

Slide 12 text

Ҿ਺ΛνΣοΫͯ͠ΈΔ

Slide 13

Slide 13 text

class CalculateException extends Exception {} class Calculator { public static function pow3($n) { if (!is_int($n)) { throw new CalculateException; } return $n ** 3; } } try { print Calculator::pow3('string'); } catch (CalculateException $e) { print 'Exception!!!'; } // => 'Exception!!!'

Slide 14

Slide 14 text

w Ҿ਺૿͑ͨͱ͖ʹՄಡੑ͕Լ͕Δ w &YDFQUJPO͸༧૝͞ΕΔΤϥʔ΁ͷରॲ๏Ͱ͋ͬͯɺ
 ͋ͬͯ͸ͳΒͳ͍ࣄ৅ ࠓճͷ৔߹ͩͱจࣈྻΛೖྗ͢Δ͜ͱ 
 ͷରॲ๏Ͱ͸ͳ͍ͷͰ͸ʁ w ෆਖ਼ͳೖྗ͸ͦ΋ͦ΋ड͚෇͚ͳ͍Α͏ʹ͍ͨ͠

Slide 15

Slide 15 text

ͦ͜Ͱܕએݴ

Slide 16

Slide 16 text

class Calculator { public static function pow3(int $n) : int { return $n ** 3; } } try { print Calculator::pow3(3); } catch (TypeError $e) { print "TypeError!"; } // => 27

Slide 17

Slide 17 text

class Calculator { public static function pow3(int $n) : int { return $n ** 3; } } try { print Calculator::pow3("string"); } catch (TypeError $e) { print "TypeError!"; } // => "TypeError!"

Slide 18

Slide 18 text

class Calculator { public static function pow3(int $n) : int { return $n ** 3; } } try { print Calculator::pow3("3"); } catch (TypeError $e) { print "TypeError!"; } // ???

Slide 19

Slide 19 text

class Calculator { public static function pow3(int $n) : int { return $n ** 3; } } try { print Calculator::pow3("3"); } catch (TypeError $e) { print "TypeError!"; } // => 27

Slide 20

Slide 20 text

declare(strict_types=1); class Calculator { public static function pow3(int $n) : int { return $n ** 3; } } try { print Calculator::pow3("3"); } catch (TypeError $e) { print "TypeError!"; } // => "TypeError!" SF ☺

Slide 21

Slide 21 text

class Calculator { public static function pow3(int $n) : int { return $n ** 3; } } try { print Calculator::pow3(null); } catch (TypeError $e) { print "TypeError!"; } // ???

Slide 22

Slide 22 text

class Calculator { public static function pow3(int $n) : int { return $n ** 3; } } try { print Calculator::pow3(null); } catch (TypeError $e) { print "TypeError!"; } // => "TypeError!"

Slide 23

Slide 23 text

class Calculator { public static function pow3(?int $n) : int { return $n ** 3; } } try { print Calculator::pow3(null); } catch (TypeError $e) { print "TypeError!"; } // => 0 OVMMBCMF

Slide 24

Slide 24 text

w ܕએݴͰೖग़ྗΛ੍ݶ͢Δ w ؒҧͬͨ࢖͍ํ͕Ͱ͖ͳ͍Α͏ʹ͢Δ w ๷ޚతϓϩάϥϛϯάͷख๏ w ࢖͍खʹաࣦ͕͋ͬͯ΋ඃ֐͕ٴ͹ͳ͍Α͏ʹ͢Δ w OPHBSCBHFBMMPXFEJO w ͱ͍͏Α͏ͳ͜ͱ͕$PEF$PNQMFUFʹॻ͔ΕͯΔ w ձࣾͷຊ୨ʹ͋Γ·͢

Slide 25

Slide 25 text

IUUQTTQFBLFSEFDLDPNUXBEBQIQDPOGFSFODF ΑΓ࣮ફతͳ಺༰͸U@XBEB͞ΜͷεϥΠυΛಡΈ·͠ΐ͏

Slide 26

Slide 26 text

·ͱΊ w 1)1ʹ͸ܕએݴͱ͍͏ػೳ͕͋Δ w ܕએݴΛ࢖͏͜ͱͰϝιουͷҾ਺ɾฦΓ஋ͷܕΛࢦఆͰ͖Δ w ೖྗΛ੍ݶ͢Δ͜ͱͰ࢖͍ख͕ؒҧ͑Δ͜ͱΛࠔ೉ʹͰ͖Δ