開発者が条件ルールで条件ステートメントを使用できるようにすることで、複雑な条件を処理できるバリデーターを作成しています。
一連のルールを使用したこの例を見てください。
...
"element_name":{
"required": "conditional",
"conditions" : {
"requirements" : "(4 < 5)",
"requirements" : "('something' == 'something_else')"
}
}
...
次に PHP が行うことは、それらをループし、requirements
それらをコードとして評価して、要素が必要かどうかを判断するブール値を返すことです。
関数を使用する際の問題eval()
は非常に明白です。条件ステートメントのみが許可されるものであることを考えると、これを行うより安全な方法はありますか?
$result = eval(element_name->requirements[0]);
君たちありがとう。
- - アップデート - - -
マイクとアイデアをくれたみんなに感謝します。正直に言うと、みんなのアイデアを少し使ってしまったので、みんなを答えとしてマークできたらいいのにと思います。マイクのより多くので、彼はそれを取得します。
したがって、これはフィールドを条件付きで検証する非常に魅力的な方法であるため、おそらく将来検討されることになるでしょう。私の目標は、これに関する直感的な方法を作成することです。私は、json 構成ファイル内で条件文を単純に平手打ちするというアイデアが気に入りました。もちろん、これには重大なセキュリティ リスクや非常に複雑な解析エンジンが伴うため、開発者に条件付き言語の方法を学習させることはやめましたが、ご覧のとおり、元の方法と非常に似たものにしました。シンプルな API を用意することが重要だと思います。そうしないと、プラットフォームでの開発が妨げられます。見てみな:
"element_name":{
"required": "conditional",
"conditions" : {
"<" : ['4', '5'],
"==" : [':element_id', ':other_element'], // will grab the values of those elements and compare
"exp" : [['something', '==', 'something_else'], 'OR', [':other_element', '!=', '0']]
}
}