PHP 8.3で追加されたjson_validate()を徹底的に深掘りしてみよう
by
mashirou1234
×
Copy
Open
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Slide 1
Slide 1 text
PHP 8.3で追加された json_validate()を徹底 的に深掘りしてみよう 株式会社 Gladiolus LAB 柚⼝ましろう
Slide 2
Slide 2 text
アジェンダ PHP8.3が登場してから json_validate()は使ってる? Json_validate() is 何 いい感じの使い⽅? まとめ ⾃⼰紹介
Slide 3
Slide 3 text
PHP8.3が登場してから
Slide 4
Slide 4 text
PHP8.3に アップグレードした?
Slide 5
Slide 5 text
PHP8.3に アップグレードした? お仕事ではやってませんが、 個⼈的の環境はもう上げました🎉
Slide 6
Slide 6 text
PHP8.3の 新機能
Slide 7
Slide 7 text
PHP8.3の 新機能 RCF Typed class constants クラス定数の型付け Dynamic class constant fetch クラス定数の⽂字列指 定 Marking overridden methods (#[\Override]) Overrideアトリビュー トの追加 Readonly amendments 読み取り専⽤プロパ ティのディープクロー ン json_validate 本⽇のメイン
Slide 8
Slide 8 text
PHP8.3の 新機能 RCF Typed class constants クラス定数の型付け Dynamic class constant fetch クラス定数の⽂字列指 定 Marking overridden methods (#[\Override]) Overrideアトリビュー トの追加 Readonly amendments 読み取り専⽤プロパ ティのディープクロー ン json_validate 本⽇のメイン
Slide 9
Slide 9 text
json_validate()は 使ってる?
Slide 10
Slide 10 text
json_validate() is 何
Slide 11
Slide 11 text
json_validate() is 何
Slide 12
Slide 12 text
json_validate() is 何
Slide 13
Slide 13 text
json_validate() is 何
Slide 14
Slide 14 text
おしまい
Slide 15
Slide 15 text
おしまい
Slide 16
Slide 16 text
json_validate() is 何 JSONであるかどうかを⽂字列型の状態から判断が付けられる
Slide 17
Slide 17 text
json_validate() is 何 JSONであるかどうかを⽂字列型の状態から判断が付けられる
Slide 18
Slide 18 text
json_validate() is 何 JSONであるかどうかを⽂字列型の状態から判断が付けられる 従来の形
Slide 19
Slide 19 text
json_validate() is 何 JSONであるかどうかを⽂字列型の状態から判断が付けられる 従来の形
Slide 20
Slide 20 text
json_validate() is 何 JSONであるかどうかを⽂字列型の状態から判断が付けられる 従来の形
Slide 21
Slide 21 text
json_validate() is 何 JSONであるかどうかを⽂字列型の状態から判断が付けられる これから
Slide 22
Slide 22 text
json_validate() is 何 JSONであるかどうかを⽂字列型の状態から判断が付けられる これから
Slide 23
Slide 23 text
何が違うの? 結構速度が変わる PHP Playground: https://x.gd/jvmEZ 雑につくった⼀次配列5万件でベンチマーク json_encode()したデータを json_decode()またはjson_validate()して速度検証
Slide 24
Slide 24 text
何が違うの? 結構速度が変わる PHP Playground: https://x.gd/jvmEZ
Slide 25
Slide 25 text
何が違うの? 結構速度が変わる PHP Playground: https://x.gd/jvmEZ
Slide 26
Slide 26 text
何が違うの? 100万件だともっと変わる PHP Playground: https://x.gd/jvmEZ
Slide 27
Slide 27 text
何が違うの? JSONに変なデータが混⼊していたら PHP Playground: https://x.gd/jvmEZ
Slide 28
Slide 28 text
実装をGithubで⾒る php-srcを⾒るのは PHPer仕草(?) アイコン: https://github.com/logos
Slide 29
Slide 29 text
実装をGithubで⾒る アイコン: https://github.com/logos json_validate
Slide 30
Slide 30 text
実装をGithubで⾒る アイコン: https://github.com/logos お隣のjson_decode
Slide 31
Slide 31 text
いい感じの使い⽅... Laravelでいうところの...
Slide 32
Slide 32 text
いい感じの使い⽅... Laravelでいうところの... Controllerよりも前、Middleware部でやるのが理想的?
Slide 33
Slide 33 text
いい感じの使い⽅... Laravelでいうところの... Controllerよりも前、Middleware部でやるのが理想的? 本⾳
Slide 34
Slide 34 text
いい感じの使い⽅... Laravelでいうところの... Controllerよりも前、Middleware部でやるのが理想的? 本⾳
Slide 35
Slide 35 text
いい感じの使い⽅... サーバにリクエストを送るときのパターン
Slide 36
Slide 36 text
いい感じの使い⽅... サーバにリクエストを送るときのパターン
Slide 37
Slide 37 text
いい感じの使い⽅... サーバにリクエストを送るときのパターン
Slide 38
Slide 38 text
いい感じの使い⽅... サーバにリクエストを送るときのパターン
Slide 39
Slide 39 text
いい感じの使い⽅... サーバにリクエストを送るときのパターン
Slide 40
Slide 40 text
いい感じの使い⽅... こういうの [{"id":1,"name":"Item 1","details":{"description":"Description for item 1","specs":{"weight":"10 kg","dimensio
Slide 41
Slide 41 text
いい感じの使い⽅... こういうの [{"id":1,"name":"Item 1","details":{"description":"Description for item 1","specs":{"weight":"10 kg","dimensio 何かしら問題のあるデータを事前に防ぐとかはやりたい時もある
Slide 42
Slide 42 text
いい感じの使い⽅... こういうの [{"id":1,"name":"Item 1","details":{"description":"Description for item 1","specs":{"weight":"10 kg","dimensio 何かしら問題のあるデータを事前に防ぐとかはやりたい時もある 出来る!
Slide 43
Slide 43 text
いい感じの使い⽅! チーム開発として • MiddlewareでRequestからJSONが格納されている引数から パース可能か⼀次チェックするのが適切そう • ただし、JSON型以外も貫通するので注意が必要 • e.g. json_validate(“”); • e.g. json_validate(12345); • こういうのは素直にバリデーションしよう • ⽬的はあくまでも「JSON型としてパースできるかどうか」
Slide 44
Slide 44 text
まとめ • 使い所は要所に限る • json_decode()にもあるパース処理出来るかどうかだけ抽出したもの • API通信で⼤規模データをJSONで送るときは速度の軽量化は可能 • 市販薬レベルなので多⽤するのは避けよう(あまり意味はない)
Slide 45
Slide 45 text
⾃⼰紹介 X_Name: 柚⼝ましろう X_ID: yu_mashirou 本名: 代⼝勇真 株式会社 Gladiolus LAB これは余⽩