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 サイトの他の関連記事を参照してください。