背景:
Henry有一个应用程序,他希望允许非开发人员为PHP结构化变量指定验证规则。
示例:
$user_profile = Array(
main => Array(
first_name => "Archibald",
last_name => "Shaw",
sex => "male",
age => "33",
),
guardian => Array(
first_name => "",
last_name => "",
),
children => Array(
0 => Array(
first_name => "Sally",
last_name => "Shaw",
),
1 => Array(
first_name => "Scott",
last_name => "Shaw",
),
),
);
目标:
目标是允许用户指定自动化的验证规则:$user_profile
格式正确吗?
用户应该能够在不编写任何PHP代码的情况下生成验证规则,比如:
if
( user_profile.main.first_name.is_blank )
then
user_profile.add_validation_error('Error: main.first_name must not be blank')
if
( user_profile.main.last_name.is_blank )
then
user_profile.add_validation_error('Error: main.last_name must not be blank')
if
( user_profile.main.age < 18 )
and (user_profile.guardian.first_name.is_blank)
and (user_profile.guardian.last_name.is_blank)
then
user_profile.add_validation_error('Error: you must specify a guardian')
问题:
有没有一个PHP库或工具可以做类似的事情?
不,没有。你可能得自己造一个。
Kohana框架有这个用于表单验证,请查看:
http://kohanaframework.org/3.2/guide/kohana/security/validation
解决方案
- Symfony验证器
- Symfony表达式语言组件
- PHP的JMESPath