Upgrade to Pro — share decks privately, control downloads, hide ads and more …

PHP: null, default null, nullable and void

7b606c5039f083d13e2d2320ce6ddcfa?s=47 DQNEO
July 25, 2018

PHP: null, default null, nullable and void

PHPのnull, = null, nullable, voidについておさらいしてみよう

7b606c5039f083d13e2d2320ce6ddcfa?s=128

DQNEO

July 25, 2018
Tweet

Transcript

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

  2. OVMMͱ͸Կ͔

  3. σϑΥϧτOVMMͱ͸

  4. OVMMBCMFͱ͸

  5. WPJEͱ͸

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

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

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

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

  10. σϑΥϧτOVMMͱ͸ function f(int $a, int $b = null) { return

    [$a, $b]; } f(1); // [1, null] 引数を渡さなかったときのデフォルト値
  11. ͱࢥ͏͡Όͳ͍Ͱ͔͢ʁ ͦΕ͚ͩ͡Όͳ͍ΜͰ͢

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

  13. function f(int $a = null, int $b) { return [$a,

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

    $c) { } f(null, null, 1); => [null, null, 1] もはや「デフォルト値」じゃなくない? だって引数渡してるもん
  15. ͦ͏ɺ ඞਢҾ਺ΑΓࠨʹ͋ΔOVMM͸શͯ ʮσϑΥϧτ஋ʯ
 ͷ໾ׂΛࣦ͍ͬͯΔ

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

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

  18. function f(int $a = null, int $b) { } function

    f(?int $a, int $b) { } この場合は= nullじゃなくてnullableを使おう 可読性向上!
  19. ʮσϑΥϧτҾ਺ʯͷ৔߹΋ OVMMBCMFએݴͰ͖Δ function f(int $a, int $b = null) {

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

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

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

    => null
  23. WPJEͱ͸

  24. 1)1͔Βೖͬͨ৽ߏจ function f() :void { } function f() :void {

    return; } 関数が値を返さないことを宣言できる
  25. ݺͼग़͠ଆࢹ఺ͩͱOVMM function f() :void { } var_dump(f()); // null void型関数を実行するとnullが得られる

  26. ͔͠͠OVMM஋ΛSFUVSO͢ΔͱΤϥʔ function f() :void { return null; } var_dump(f()); //Fatal

    error: A void function must not return a value 「returnの右に式を書いてはいけない」くらいの意味
  27. w OVMM w σϑΥϧτOVMM w OVMMBCMF w WPJE Ҏ্ɺ ʹ͍͓ͭͯ͞Β͍͠·ͨ͠

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