PHP 8.3で追加されたjson_validate()を徹底的に深掘りしてみよう
by
mashirou1234
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
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 これは余⽩