Enviar búsqueda
Cargar
JSON SchemaとPHP
•
51 recomendaciones
•
29,356 vistas
Hiraku Nakano
Seguir
第72回 PHP勉強会@Engine Yard で発表した資料です。
Leer menos
Leer más
Tecnología
Denunciar
Compartir
Denunciar
Compartir
1 de 52
Descargar ahora
Descargar para leer sin conexión
Recomendados
Dockerイメージ管理の内部構造
Dockerイメージ管理の内部構造
Etsuji Nakai
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Masahito Zembutsu
OpenAI の音声認識 AI「Whisper」をテストしてみた
OpenAI の音声認識 AI「Whisper」をテストしてみた
Hide Koba
Keycloak入門
Keycloak入門
Hiroyuki Wada
Spring Boot + Netflix Eureka
Spring Boot + Netflix Eureka
心 谷本
gRPC入門
gRPC入門
Kenjiro Kubota
Dockerfile を書くためのベストプラクティス解説編
Dockerfile を書くためのベストプラクティス解説編
Masahito Zembutsu
Docker道場「Dockerの基本概念」0825インフラ勉強会資料
Docker道場「Dockerの基本概念」0825インフラ勉強会資料
Masahito Zembutsu
Recomendados
Dockerイメージ管理の内部構造
Dockerイメージ管理の内部構造
Etsuji Nakai
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Masahito Zembutsu
OpenAI の音声認識 AI「Whisper」をテストしてみた
OpenAI の音声認識 AI「Whisper」をテストしてみた
Hide Koba
Keycloak入門
Keycloak入門
Hiroyuki Wada
Spring Boot + Netflix Eureka
Spring Boot + Netflix Eureka
心 谷本
gRPC入門
gRPC入門
Kenjiro Kubota
Dockerfile を書くためのベストプラクティス解説編
Dockerfile を書くためのベストプラクティス解説編
Masahito Zembutsu
Docker道場「Dockerの基本概念」0825インフラ勉強会資料
Docker道場「Dockerの基本概念」0825インフラ勉強会資料
Masahito Zembutsu
DockerとDocker Hubの操作と概念
DockerとDocker Hubの操作と概念
Masahito Zembutsu
そろそろ知っておきたい!!コンテナ技術とDockerのキホン
そろそろ知っておきたい!!コンテナ技術とDockerのキホン
Naoki Nagazumi
「黒騎士と白の魔王」gRPCによるHTTP/2 - API, Streamingの実践
「黒騎士と白の魔王」gRPCによるHTTP/2 - API, Streamingの実践
Yoshifumi Kawai
Docker道場オンライン#1 Docker基礎概念と用語の理解
Docker道場オンライン#1 Docker基礎概念と用語の理解
Masahito Zembutsu
Lightweight Keycloak
Lightweight Keycloak
Hiroyuki Wada
Cloud Foundry V2を、もうちょっと深掘りしよう
Cloud Foundry V2を、もうちょっと深掘りしよう
Kazuto Kusama
Docker Compose 徹底解説
Docker Compose 徹底解説
Masahito Zembutsu
やさしいGitの内部構造 - yapcasia2013
やさしいGitの内部構造 - yapcasia2013
DQNEO
世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture
Atsushi Nakamura
Jenkins 再入門
Jenkins 再入門
Jumpei Miyata
Javaはどのように動くのか~スライドでわかるJVMの仕組み
Javaはどのように動くのか~スライドでわかるJVMの仕組み
Chihiro Ito
Apache Avro vs Protocol Buffers
Apache Avro vs Protocol Buffers
Seiya Mizuno
Dockerイメージの理解とコンテナのライフサイクル
Dockerイメージの理解とコンテナのライフサイクル
Masahito Zembutsu
PHPでWebSocketを実装してみてわかったこと
PHPでWebSocketを実装してみてわかったこと
ksimoji
実践!Django + GraphQL 実装
実践!Django + GraphQL 実装
ssuseraf19bf
Go入門
Go入門
Takuya Ueda
入門 シェル実装
入門 シェル実装
Yusuke Sangenya
UniRx完全に理解した
UniRx完全に理解した
torisoup
ソーシャルゲームのためのデータベース設計
ソーシャルゲームのためのデータベース設計
Yoshinori Matsunobu
Laravelを用いたゲームサーバーのチューニング
Laravelを用いたゲームサーバーのチューニング
NOW PRODUCTION
JSON Schema で Web API のスキマを埋めよう
JSON Schema で Web API のスキマを埋めよう
VOYAGE GROUP
JSON Schema と API テスト YAPC::Asia Tokyo 2014
JSON Schema と API テスト YAPC::Asia Tokyo 2014
Naoki Shimizu
Más contenido relacionado
La actualidad más candente
DockerとDocker Hubの操作と概念
DockerとDocker Hubの操作と概念
Masahito Zembutsu
そろそろ知っておきたい!!コンテナ技術とDockerのキホン
そろそろ知っておきたい!!コンテナ技術とDockerのキホン
Naoki Nagazumi
「黒騎士と白の魔王」gRPCによるHTTP/2 - API, Streamingの実践
「黒騎士と白の魔王」gRPCによるHTTP/2 - API, Streamingの実践
Yoshifumi Kawai
Docker道場オンライン#1 Docker基礎概念と用語の理解
Docker道場オンライン#1 Docker基礎概念と用語の理解
Masahito Zembutsu
Lightweight Keycloak
Lightweight Keycloak
Hiroyuki Wada
Cloud Foundry V2を、もうちょっと深掘りしよう
Cloud Foundry V2を、もうちょっと深掘りしよう
Kazuto Kusama
Docker Compose 徹底解説
Docker Compose 徹底解説
Masahito Zembutsu
やさしいGitの内部構造 - yapcasia2013
やさしいGitの内部構造 - yapcasia2013
DQNEO
世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture
Atsushi Nakamura
Jenkins 再入門
Jenkins 再入門
Jumpei Miyata
Javaはどのように動くのか~スライドでわかるJVMの仕組み
Javaはどのように動くのか~スライドでわかるJVMの仕組み
Chihiro Ito
Apache Avro vs Protocol Buffers
Apache Avro vs Protocol Buffers
Seiya Mizuno
Dockerイメージの理解とコンテナのライフサイクル
Dockerイメージの理解とコンテナのライフサイクル
Masahito Zembutsu
PHPでWebSocketを実装してみてわかったこと
PHPでWebSocketを実装してみてわかったこと
ksimoji
実践!Django + GraphQL 実装
実践!Django + GraphQL 実装
ssuseraf19bf
Go入門
Go入門
Takuya Ueda
入門 シェル実装
入門 シェル実装
Yusuke Sangenya
UniRx完全に理解した
UniRx完全に理解した
torisoup
ソーシャルゲームのためのデータベース設計
ソーシャルゲームのためのデータベース設計
Yoshinori Matsunobu
Laravelを用いたゲームサーバーのチューニング
Laravelを用いたゲームサーバーのチューニング
NOW PRODUCTION
La actualidad más candente
(20)
DockerとDocker Hubの操作と概念
DockerとDocker Hubの操作と概念
そろそろ知っておきたい!!コンテナ技術とDockerのキホン
そろそろ知っておきたい!!コンテナ技術とDockerのキホン
「黒騎士と白の魔王」gRPCによるHTTP/2 - API, Streamingの実践
「黒騎士と白の魔王」gRPCによるHTTP/2 - API, Streamingの実践
Docker道場オンライン#1 Docker基礎概念と用語の理解
Docker道場オンライン#1 Docker基礎概念と用語の理解
Lightweight Keycloak
Lightweight Keycloak
Cloud Foundry V2を、もうちょっと深掘りしよう
Cloud Foundry V2を、もうちょっと深掘りしよう
Docker Compose 徹底解説
Docker Compose 徹底解説
やさしいGitの内部構造 - yapcasia2013
やさしいGitの内部構造 - yapcasia2013
世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture
Jenkins 再入門
Jenkins 再入門
Javaはどのように動くのか~スライドでわかるJVMの仕組み
Javaはどのように動くのか~スライドでわかるJVMの仕組み
Apache Avro vs Protocol Buffers
Apache Avro vs Protocol Buffers
Dockerイメージの理解とコンテナのライフサイクル
Dockerイメージの理解とコンテナのライフサイクル
PHPでWebSocketを実装してみてわかったこと
PHPでWebSocketを実装してみてわかったこと
実践!Django + GraphQL 実装
実践!Django + GraphQL 実装
Go入門
Go入門
入門 シェル実装
入門 シェル実装
UniRx完全に理解した
UniRx完全に理解した
ソーシャルゲームのためのデータベース設計
ソーシャルゲームのためのデータベース設計
Laravelを用いたゲームサーバーのチューニング
Laravelを用いたゲームサーバーのチューニング
Destacado
JSON Schema で Web API のスキマを埋めよう
JSON Schema で Web API のスキマを埋めよう
VOYAGE GROUP
JSON Schema と API テスト YAPC::Asia Tokyo 2014
JSON Schema と API テスト YAPC::Asia Tokyo 2014
Naoki Shimizu
こわくない同時実行制御
こわくない同時実行制御
Hiraku Nakano
STAC2015 講演3 広告システム刷新よもやま話〜テストが当たり前となるまでにやったこと #stac2015
STAC2015 講演3 広告システム刷新よもやま話〜テストが当たり前となるまでにやったこと #stac2015
Yahoo!デベロッパーネットワーク
C#の強み、或いは何故PHPから乗り換えるのか
C#の強み、或いは何故PHPから乗り換えるのか
Yoshifumi Kawai
10分でわかる主成分分析(PCA)
10分でわかる主成分分析(PCA)
Takanori Ogata
はじめよう多変量解析~主成分分析編~
はじめよう多変量解析~主成分分析編~
宏喜 佐野
composer-scriptsについて
composer-scriptsについて
Hiraku Nakano
WebAPIのこれまでとこれから
WebAPIのこれまでとこれから
Yohei Yamamoto
Pythonによる機械学習の最前線
Pythonによる機械学習の最前線
Kimikazu Kato
Phpをいじり倒す10の方法
Phpをいじり倒す10の方法
Moriyoshi Koizumi
Destacado
(11)
JSON Schema で Web API のスキマを埋めよう
JSON Schema で Web API のスキマを埋めよう
JSON Schema と API テスト YAPC::Asia Tokyo 2014
JSON Schema と API テスト YAPC::Asia Tokyo 2014
こわくない同時実行制御
こわくない同時実行制御
STAC2015 講演3 広告システム刷新よもやま話〜テストが当たり前となるまでにやったこと #stac2015
STAC2015 講演3 広告システム刷新よもやま話〜テストが当たり前となるまでにやったこと #stac2015
C#の強み、或いは何故PHPから乗り換えるのか
C#の強み、或いは何故PHPから乗り換えるのか
10分でわかる主成分分析(PCA)
10分でわかる主成分分析(PCA)
はじめよう多変量解析~主成分分析編~
はじめよう多変量解析~主成分分析編~
composer-scriptsについて
composer-scriptsについて
WebAPIのこれまでとこれから
WebAPIのこれまでとこれから
Pythonによる機械学習の最前線
Pythonによる機械学習の最前線
Phpをいじり倒す10の方法
Phpをいじり倒す10の方法
Similar a JSON SchemaとPHP
ふぉとぶらり+LODAC -iPhoneアプリでのSPARQLでの活用事例-
ふぉとぶらり+LODAC -iPhoneアプリでのSPARQLでの活用事例-
uedayou
Zabbix API
Zabbix API
Shuhei Hayashibara
Phjosh(仮)プロジェクト
Phjosh(仮)プロジェクト
Moriyoshi Koizumi
Spring data-rest-and-spring-cloud-contract
Spring data-rest-and-spring-cloud-contract
Takeshi Ogawa
ZabbixのAPIを使って運用を楽しくする話
ZabbixのAPIを使って運用を楽しくする話
Masahito Zembutsu
prmdのドキュメントが読みやすくなる話
prmdのドキュメントが読みやすくなる話
ota42y
Firefox Add-on SDK 入門
Firefox Add-on SDK 入門
Shoot Morii
イマドキの現場で使えるJavaライブラリ事情
イマドキの現場で使えるJavaライブラリ事情
takezoe
Elasticsearchプラグインの作り方
Elasticsearchプラグインの作り方
Shinsuke Sugaya
JSON Based Web Services
JSON Based Web Services
Toru Yamaguchi
20140903groonga発表資料
20140903groonga発表資料
Hironobu Saitoh
現在のWebフロントエンドの現状と愚痴と、それに対するHaxeフロントエンドライブラリMageについて
現在のWebフロントエンドの現状と愚痴と、それに対するHaxeフロントエンドライブラリMageについて
Nobukazu Hanada
RとWeb API
RとWeb API
Yohei Sato
Grails 2.0.0.M1の話
Grails 2.0.0.M1の話
Tsuyoshi Yamamoto
Similar a JSON SchemaとPHP
(14)
ふぉとぶらり+LODAC -iPhoneアプリでのSPARQLでの活用事例-
ふぉとぶらり+LODAC -iPhoneアプリでのSPARQLでの活用事例-
Zabbix API
Zabbix API
Phjosh(仮)プロジェクト
Phjosh(仮)プロジェクト
Spring data-rest-and-spring-cloud-contract
Spring data-rest-and-spring-cloud-contract
ZabbixのAPIを使って運用を楽しくする話
ZabbixのAPIを使って運用を楽しくする話
prmdのドキュメントが読みやすくなる話
prmdのドキュメントが読みやすくなる話
Firefox Add-on SDK 入門
Firefox Add-on SDK 入門
イマドキの現場で使えるJavaライブラリ事情
イマドキの現場で使えるJavaライブラリ事情
Elasticsearchプラグインの作り方
Elasticsearchプラグインの作り方
JSON Based Web Services
JSON Based Web Services
20140903groonga発表資料
20140903groonga発表資料
現在のWebフロントエンドの現状と愚痴と、それに対するHaxeフロントエンドライブラリMageについて
現在のWebフロントエンドの現状と愚痴と、それに対するHaxeフロントエンドライブラリMageについて
RとWeb API
RとWeb API
Grails 2.0.0.M1の話
Grails 2.0.0.M1の話
Más de Hiraku Nakano
composerの遅さをまじめに考える #phpstudy
composerの遅さをまじめに考える #phpstudy
Hiraku Nakano
Composer並列化プラグイン #phpblt
Composer並列化プラグイン #phpblt
Hiraku Nakano
Scrutinizer CIでPHPも静的解析 #phpstudy
Scrutinizer CIでPHPも静的解析 #phpstudy
Hiraku Nakano
PSR-3 Logger Interfaceの紹介
PSR-3 Logger Interfaceの紹介
Hiraku Nakano
pecl-AOPの紹介
pecl-AOPの紹介
Hiraku Nakano
URLで遊ぼう
URLで遊ぼう
Hiraku Nakano
Xml builderの紹介
Xml builderの紹介
Hiraku Nakano
Más de Hiraku Nakano
(7)
composerの遅さをまじめに考える #phpstudy
composerの遅さをまじめに考える #phpstudy
Composer並列化プラグイン #phpblt
Composer並列化プラグイン #phpblt
Scrutinizer CIでPHPも静的解析 #phpstudy
Scrutinizer CIでPHPも静的解析 #phpstudy
PSR-3 Logger Interfaceの紹介
PSR-3 Logger Interfaceの紹介
pecl-AOPの紹介
pecl-AOPの紹介
URLで遊ぼう
URLで遊ぼう
Xml builderの紹介
Xml builderの紹介
Último
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
danielhu54
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
Hiroki Ichikura
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
Toru Tamaki
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
taisei2219
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Yuma Ohgami
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
iPride Co., Ltd.
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
Toru Tamaki
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
sugiuralab
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
Toru Tamaki
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
Ryo Sasaki
Último
(10)
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
JSON SchemaとPHP
1.
JSON SchemaとPHP 第72回 PHP勉強会@東京
2.
自己紹介 • 中野 拓 •
https://twitter.com/Hiraku • http://blog.tojiru.net/ • PHP歴6年ぐらい • 最近使ってるフレームワークはYafとPhalconです • WebAPI関係のお仕事 • 最近コード書いてない。。
3.
第一部
4.
JSON Schema
5.
6.
JSON Schema • JSONの構造をバリデーションするための仕様 •
http://json-schema.org/ • http://json-schema.org/latest/json-schemacore.html
7.
8.
JSONの例 { “id”: 12345, “name”: “Hiraku
NAKANO”, “tags”: [“PHP”,”JavaScript”] }
9.
JSON Schema { integer “id”: 12345, “name”:
“Hiraku NAKANO”, “tags”: [“PHP”,”JavaScript”] } id, name, tags という プロパティを持った オブジェクト { string string[] “type”:”object”, “properties”: { “id”: {“type”:”integer”}, “name”: {“type”:”string”}, “tags”: { “type”:”array”, “items”:{“type”:”string”} }}}
10.
もし型が違ったら、判定できる { integer “id”: 12345, “name”: “Hiraku
NAKANO”, “tags”: “PHP,JavaScript” } id, name, tags という プロパティを持った オブジェクト { string string[] “type”:”object”, “properties”: { “id”: {“type”:”integer”}, “name”: {“type”:”string”}, “tags”: { “type”:”array”, “items”:{“type”:”string”} }}}
11.
バリデーター実装 バリデーション仕様書 • JSONで記述する • 仕様書を読み取って バリデーションを実行する •
言語ごとに存在 • PHP,JavaScript,Ruby,... JSON Schema
12.
PHPでの実装 • JSON Schema
for PHP がオススメ https://github.com/justinrainbow/json-schema • composerの内部で使われている
13.
<?php require ‘vendor/autoload.php’; $json =
‘{“a”:1, “b”:2}’; $schema = ‘{ “type”:”object”, “properties”:{ “a”: {“type”:”integer”}, “b”: {“type”:”integer”} } }’; $v = new JsonSchema¥Validator; $v->check(json_decode($json), json_decode($schema)); var_dump($v->getErrors()); エラーがあれば 指摘してくれる
14.
15.
超単純な例 JSON スキーマ {} {“type”:”object”} “abc” {“type”:”string”} 123 {“type”:”integer”} [1,2,3] {“type”:”array”}
16.
数値なら上限下限指定できる JSON スキーマ 3 { “type”:”integer”, “minimum”:2, “maximum”:5 }
17.
文字列なら正規表現が使える JSON スキーマ “abcdef” { “type”:”string”, “pattern”:”^a.*f$” }
18.
よく使うパターンはformatで JSON スキーマ “hiraku@tojiru.net” { “type”:”string”, “format”:”email” } date, time, date-time, uri,
host-name, email, ipv6, ip-address, color, style,
19.
型固定の配列 JSON スキーマ [1,2,3] { “type”:”array”, “items”:{ “type”:”integer” } }
20.
配列要素数の制約 JSON スキーマ [1,2,3] { “type”:”array”, “minItems”:1, “maxItems”:5 }
21.
入れ子のオブジェクト JSON { スキーマ { “type”:”object”, “properties”:{ “alice”: ... “bob”: { “type”:”object” } } “alice”:
123, “bob”: { “charlie”: 223 } } } 無限に入れ子可能
22.
未定義のプロパティ拒否 JSON { “alice”: 123, “bob”: 223, “charlie”:
323 } スキーマ { “type”:”object”, “properties”: { “alice”: ... “bob”: ... }, “additionalProperties”: false }
23.
一通りそろってる感じがする • 詳しくはJSON Schema
for PHPのテストを参照! • 入れ子など、構造のバリデーションが得意なのが JSON Schemaの特徴
24.
まとめ • JSON Schemaを使うと、JSONをチェックして、期待通 りの構造になっているか調べることができます。 •
PHPにもJSON Schemaの実装があります。
25.
第一部 完
26.
...
27.
28.
「JSONの構造を バリデーションし て何が嬉しいの か?」 についてこれから解説します
29.
第二部
30.
PHPと JSON
31.
突然ですが
32.
PHPは JSONで 出来ています
33.
...
34.
って思われそうなので もう少し丁寧に言うと
35.
PHPのデータ構造は JSON互換です
36.
JSONと言えば • boolean, number,
stringなどの基本的な型 • array, object を多段に入れ子にした構造
37.
38.
例1 $_GET
39.
?a[]=1&a[]=2&a[]=3&b=hogehoge $_GET === [ ‘a’
=> [‘1’,’2’,’3’], ‘b’ => ‘hogehoge’ ] JSONだよね!
40.
{ } “type”:”object”, “properties”:{ “a”:{ “type”:”array”, “maxItems”:3 }, “b”:{“type”:”string”} }
41.
<?php //... $v = new
JsonSchema¥Validator; $get = json_decode(json_encode($_GET)); $v->check($get, $schema); var_dump($v->getErrors());
42.
普通に$_GETをバリデーションす ると結構面倒くさい <?php if ( isset($_GET[‘a’], $_GET[‘b’])
&& is_array($_GET[‘a’]) && count($_GET[‘a’]) <= 3 && is_string($_GET[‘b’]) ) { //... } もっと入れ子になって いると更に厄介 issetの嵐 これだと何が原因で 駄目だったのか分か らない
43.
例2 関数の引数
44.
<?php /** * @param int
$a * @param string $b * @param array $config */ function hoge($a, $b, array $config) { //... }
45.
<?php function hoge($a, $b,
array $config) { $args = get_defined_vars(); $args === [ ‘a’ => ..., ‘b’ => ..., ‘config’ => ... ]; }
46.
{ } “type”:”object”, “properties”:{ “a”:{“type”:”integer”}, “b”:{“type”:”string”}, “config”:{ “type”:”object”,... } }
47.
以下省略
48.
つまり
49.
JSON Schemaとは、 JSON相当のデータ構造なら 何でもバリデーションできる 応用範囲の超広い ライブラリなのです
50.
51.
まとめ • PHP=だいたいJSON • ゆえに、JSON
SchemaはPHPのデータ構 造ならだいたい何でもバリデーションでき る • 手持ちのバリデーションライブラリの1つ として、覚えておくといいと思います
52.
$ composer require
justinrainbow/json-schema (依存パッケージもないので割と使いやすいと思う) 完
Descargar ahora