×
Copy
Open
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
#phpltjam ©2020 RAKUS Co., Ltd. ©2020 RAKUS Co., Ltd. PHP8で導入される match式 桑原 健悟
Slide 2
Slide 2 text
#phpltjam ©2020 RAKUS Co., Ltd. 自己紹介 •氏名:桑原 健悟(くわはら けんご) •所属:株式会社ラクス •お仕事:Mail Dealerの開発
Slide 3
Slide 3 text
#phpltjam ©2020 RAKUS Co., Ltd. 今日のお話 •https://tech-blog.rakus.co.jp/entry/20200917/php
Slide 4
Slide 4 text
#phpltjam ©2020 RAKUS Co., Ltd. 今日のお話 PHP8で導入されたmatch式について ・switchとの違いは? ・何が嬉しいの?
Slide 5
Slide 5 text
#phpltjam ©2020 RAKUS Co., Ltd. お品書き ・match式とは ・matchの特徴 ・値の代入が得意 ・さらばbreak忘れ ・条件忘れにエラーで気付ける ・厳密な比較
Slide 6
Slide 6 text
#phpltjam ©2020 RAKUS Co., Ltd. ©2020 RAKUS Co., Ltd. match式とは 桑原 健悟
Slide 7
Slide 7 text
#phpltjam ©2020 RAKUS Co., Ltd. match式とは switchのような分岐の構文 $paramの値で処理を分岐
Slide 8
Slide 8 text
#phpltjam ©2020 RAKUS Co., Ltd. switchとmatchの違い match switch 返り値 あり なし breakの記述 不要 必要 各条件の処理 1行でしか書けない ブロックで記述可能 比較 厳密(===) 緩やか(==) どの条件にも当てはまらない場合 エラーになる そのまま実行される
Slide 9
Slide 9 text
#phpltjam ©2020 RAKUS Co., Ltd. ©2020 RAKUS Co., Ltd. match式の特徴 桑原 健悟
Slide 10
Slide 10 text
#phpltjam ©2020 RAKUS Co., Ltd. ©2020 RAKUS Co., Ltd. 値の代入が得意 桑原 健悟
Slide 11
Slide 11 text
#phpltjam ©2020 RAKUS Co., Ltd. switchやifは「文」、matchは「式」 ● 文とは ● 値を返さない → 各条件で代入が必要 ● 式とは ● 値を返す → 代入忘れが発生しにくい 直接、値の代入はできない 値の代入は1回でいい
Slide 12
Slide 12 text
#phpltjam ©2020 RAKUS Co., Ltd. ©2020 RAKUS Co., Ltd. さらばbreak忘れ 桑原 健悟
Slide 13
Slide 13 text
#phpltjam ©2020 RAKUS Co., Ltd. break忘れが起こり得ない ● switch:明示的にbreakが必要 ● match:breakが存在しない → break忘れが起こり得ない
Slide 14
Slide 14 text
#phpltjam ©2020 RAKUS Co., Ltd. ©2020 RAKUS Co., Ltd. 条件忘れにエラーで気付ける 桑原 健悟
Slide 15
Slide 15 text
#phpltjam ©2020 RAKUS Co., Ltd. switch ユーザの成績(score)ごとに コマンド($command)を発行 日次処理でコマンドを実行するプログラム
Slide 16
Slide 16 text
#phpltjam ©2020 RAKUS Co., Ltd. match ● matchは条件の網羅性を検査し該当がなければエラーとなる
Slide 17
Slide 17 text
#phpltjam ©2020 RAKUS Co., Ltd. ©2020 RAKUS Co., Ltd. 厳密な比較 桑原 健悟
Slide 18
Slide 18 text
#phpltjam ©2020 RAKUS Co., Ltd. 厳密な比較 ● 「数値だと思っていたら文字列であり思わぬ分岐に入った」がなくなる
Slide 19
Slide 19 text
#phpltjam ©2020 RAKUS Co., Ltd. 厳密な比較は常に嬉しい? ● PHPの関数が厳密な型を意識した作りでないため、 思わぬバグとなる例を紹介
Slide 20
Slide 20 text
#phpltjam ©2020 RAKUS Co., Ltd. 厳密な比較は常に嬉しい? 結果:"jpgだよ" 結果:“defaultだよ"
Slide 21
Slide 21 text
#phpltjam ©2020 RAKUS Co., Ltd. 厳密な比較は常に嬉しい? preg_matchはtrueでなく、1を返す。 → match式ではtrue===1となり、該当してもケースに入らない
Slide 22
Slide 22 text
#phpltjam ©2020 RAKUS Co., Ltd. まとめ ● match式はswitchに比べバグが入りにくい仕様 ● 代入忘れしにくい ● break忘れがない ● 条件忘れもエラーで気付ける ● 厳密な比較は良い面も悪い面もある ● 既存コードやPHPの関数の型を把握していないと思わぬバグに繋がる恐れも
Slide 23
Slide 23 text
#phpltjam ©2020 RAKUS Co., Ltd. ©2020 RAKUS Co., Ltd. ご清聴ありがとうございました 桑原 健悟