Slide 1

Slide 1 text

!%2/&0 Ͳ͖ΎͶ͓ BU.FSDBSJ *OD QIQTUVEZ OVMM OVMM OVMMBCMF WPJE
 ʹ͍͓ͭͯ͞Β͍͠Α͏

Slide 2

Slide 2 text

OVMMͱ͸Կ͔

Slide 3

Slide 3 text

σϑΥϧτOVMMͱ͸

Slide 4

Slide 4 text

OVMMBCMFͱ͸

Slide 5

Slide 5 text

WPJEͱ͸

Slide 6

Slide 6 text

ࠓ೔͸ ʮͳ͍ʯͱ͸Կ͔ʹ͍ͭͯ
 ߟ͑ͯΈΑ͏

Slide 7

Slide 7 text

OVMMͱ͸Կ͔ • null型のnullという値 (null型にはnullという1種類の値しかな い)

Slide 8

Slide 8 text

͜Ε͸OVMM $x = null var_dump($x);

Slide 9

Slide 9 text

͜Ε΋OVMM function f() { } var_dump(f()); 関数が何も返さなかった場合、戻り値はnullとなる

Slide 10

Slide 10 text

σϑΥϧτOVMMͱ͸ function f(int $a, int $b = null) { return [$a, $b]; } f(1); // [1, null] 引数を渡さなかったときのデフォルト値

Slide 11

Slide 11 text

ͱࢥ͏͡Όͳ͍Ͱ͔͢ʁ ͦΕ͚ͩ͡Όͳ͍ΜͰ͢

Slide 12

Slide 12 text

function f(int $a = null, int $b) { } 引数を渡さなかったときのデフォルト値?

Slide 13

Slide 13 text

function f(int $a = null, int $b) { return [$a, $b]; } f(1,2); => [1,2] f(1); => Fatal error f(); => Fatal error 引数を渡さなかったときのデフォルト値? 第1引数を渡さないってそれ無理では?

Slide 14

Slide 14 text

function f(int $a = null, int $b =null, in t $c) { } f(null, null, 1); => [null, null, 1] もはや「デフォルト値」じゃなくない? だって引数渡してるもん

Slide 15

Slide 15 text

ͦ͏ɺ ඞਢҾ਺ΑΓࠨʹ͋ΔOVMM͸શͯ ʮσϑΥϧτ஋ʯ
 ͷ໾ׂΛࣦ͍ͬͯΔ

Slide 16

Slide 16 text

OVMM͸ ΋͏ͻͱͭผͷҙຯ͕͋Δɻ ʮOVMMΛड͚ͱΓՄೳʯ

Slide 17

Slide 17 text

ʮOVMMΛड͚ͱΓՄೳʯ
 ͭ·ΓOVMMBCMF

Slide 18

Slide 18 text

function f(int $a = null, int $b) { } function f(?int $a, int $b) { } この場合は= nullじゃなくてnullableを使おう 可読性向上!

Slide 19

Slide 19 text

ʮσϑΥϧτҾ਺ʯͷ৔߹΋ OVMMBCMFએݴͰ͖Δ function f(int $a, int $b = null) { } function f(int $a, ?int $b = null) { }

Slide 20

Slide 20 text

ͪͳΈʹ ͸ʮσϑΥϧτOVMMʯͷ ໾ׂΛ࣋ͨͳ͍ function f(int $a, ?int $b) { } f(1); => Fatal error

Slide 21

Slide 21 text

໭Γ஋ͷOVMMBCMFએݴ͸ɺ ஋ͳͩ͠ͱΤϥʔ function f() ?int { return; } f(); => Fatal error

Slide 22

Slide 22 text

໭Γ஋ͷOVMMBCMFએݴ͸ɺ
 ໌ࣔతʹOVMMΛฦ͢ඞཁ͋Γ function f() ?int { return null; } f(); => null

Slide 23

Slide 23 text

WPJEͱ͸

Slide 24

Slide 24 text

1)1͔Βೖͬͨ৽ߏจ function f() :void { } function f() :void { return; } 関数が値を返さないことを宣言できる

Slide 25

Slide 25 text

ݺͼग़͠ଆࢹ఺ͩͱOVMM function f() :void { } var_dump(f()); // null void型関数を実行するとnullが得られる

Slide 26

Slide 26 text

͔͠͠OVMM஋ΛSFUVSO͢ΔͱΤϥʔ function f() :void { return null; } var_dump(f()); //Fatal error: A void function must not return a value 「returnの右に式を書いてはいけない」くらいの意味

Slide 27

Slide 27 text

w OVMM w σϑΥϧτOVMM w OVMMBCMF w WPJE Ҏ্ɺ ʹ͍͓ͭͯ͞Β͍͠·ͨ͠

Slide 28

Slide 28 text

͝ਗ਼ௌ͋Γ͕ͱ͏ ͍͟͝·ͨ͠ NN