ホームページ  >  記事  >  バックエンド開発  >  ozzo を使用した検証では、埋め込み構造の検証メソッドが呼び出されません

ozzo を使用した検証では、埋め込み構造の検証メソッドが呼び出されません

王林
王林転載
2024-02-13 13:30:101222ブラウズ

使用 ozzo 验证不会调用嵌入结构的验证方法

php Xiaobian Yuzai さんは、ozzo 検証ライブラリを使用してデータ検証を簡単に実現できることを発見しましたが、場合によっては、埋め込み構造の検証メソッドを呼び出す必要がある状況に遭遇することがあります。ただし、ozzo 検証ライブラリの設計原則は、コードの単純さと読みやすさを確保するために、構造に埋め込まれた検証メソッドの呼び出しを避けることです。これは、構造に検証メソッドが埋め込まれているため、検証ロジックが複雑になり、コードの保守が困難になる可能性があるためです。したがって、ozzo 検証ライブラリを使用する場合は、この原則に従い、コードを明確にして保守しやすいように適切な検証方法を選択する必要があります。

質問内容

"github.com/go-ozzo/ozzo-validation/v4"を使用しています。 これらは私の構造です:

リーリー

これらは検証方法です:

リーリー

これは私が送信したリクエストです:

リーリー

この問題に対して func (m mystruct) validate() を呼び出したいのですが、 calling myotherstruct validator というログが得られません。

回避策

ozzo 検証 v4 を使用した質問のソース コードは、構造内に見つからないフィールド #0 を返します。これに加えて、次のコードを (myotherstruct).validate に追加する必要があります:

リーリー

このデモを試してください (https://www.php.cn/link/9f29450d2eb58feb555078bdefe28aa5 ):

リーリー

(mystruct).validate を呼び出した場合、(myotherstruct).validate は呼び出されないことに注意してください。これは、前者は myotherstruct## とは無関係であるためです。 #既知。

以上がozzo を使用した検証では、埋め込み構造の検証メソッドが呼び出されませんの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はstackoverflow.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。