Schema Reference
SV::object() に渡すフィールド定義の全表現を一覧します。
各表現は JSON Schema draft 2020-12 のキーワードに対応し、サーバー側バリデーション(Respect/Validation)とクライアント側バリデーション(client / Zod)の両方に適用されます。
フィールド型
| 表現 | JSON Schema type | 説明 |
|---|---|---|
SV::string() | "string" | テキスト入力。長さ・形式・正規表現の制約を持てる |
SV::integer() | "integer" | 整数。範囲制約を持てる |
SV::number() | "number" | 整数または小数。範囲制約を持てる |
SV::boolean() | "boolean" | 真偽値 |
SV::enum(values) | "string" + enum | 選択肢から1つを選ぶ |
SV::array(items) | "array" | 配列。各要素のスキーマを指定できる |
SV::file(accept) | -(JSON Schema 非対応) | ファイルアップロード |
RespectRules::rule() | -(JSON Schema 非対応) | Respect/Validation ルールの直接指定 |
RespectRules::postalCode() | -(JSON Schema 非対応) | 国別郵便番号 |
RespectRules::creditCard() | -(JSON Schema 非対応) | クレジットカード番号(Luhn) |
RespectRules::iban() | -(JSON Schema 非対応) | IBAN |
文字列制約
| 表現 | JSON Schema キーワード | 説明 |
|---|---|---|
.min(n) | minLength | 最小文字数 |
.max(n) | maxLength | 最大文字数 |
.email() | format: "email" | メールアドレス形式 |
.url() | format: "uri" | URL 形式 |
.pattern(p) | pattern | 正規表現 |
.date() | format: "date" | 日付(YYYY-MM-DD) |
.dateTime() | format: "date-time" | 日時(RFC 3339) |
.time() | format: "time" | 時刻(HH:mm:ss) |
.uuid() | format: "uuid" | UUID |
.ipv4() | format: "ipv4" | IPv4 アドレス |
.ipv6() | format: "ipv6" | IPv6 アドレス |
.slug() | pattern | URL スラッグ(小文字英数字・ハイフン) |
.domain() | format: "hostname" | ドメイン名 |
配列制約
| 表現 | JSON Schema キーワード | 説明 |
|---|---|---|
.minItems(n) | minItems | 最小要素数 |
.maxItems(n) | maxItems | 最大要素数 |
数値制約
| 表現 | JSON Schema キーワード | 説明 |
|---|---|---|
.min(n) | minimum | 最小値 |
.max(n) | maximum | 最大値 |
修飾子
| 表現 | 効果 |
|---|---|
.optional() | required 配列から除外。未入力を許容する |
.nullable() | type を [type, "null"] に拡張。null 値を許容する |
オブジェクト・出力
| 表現 | 説明 |
|---|---|
SV::object(fields) | フィールドの集合を定義する |
.when(field, expr, require) | 条件付き必須 |
.toJsonSchema() | JSON Schema (array) として出力 |
.toJson() | JSON Schema (string) として出力 |
.toValidator() | Respect/Validation ベースの Validator を生成 |
条件式(when() の第2引数)
.when() に渡す比較式。スカラー値を直接渡した場合は SV::equal() と等価。
| 式 | 比較演算子 | 用途 |
|---|---|---|
SV::equal($value) | === | 値が一致するとき |
SV::notEqual($value) | !== | 値が一致しないとき |
SV::greaterThanOrEqual($n) | >= | 値が $n 以上のとき |
SV::lessThanOrEqual($n) | <= | 値が $n 以下のとき |
SV::greaterThan($n) | > | 値が $n より大きいとき |
SV::lessThan($n) | < | 値が $n 未満のとき |
SV::field('name') | - | 比較先を別フィールドの値にする |