PHP结构化变量和用户生成的验证规则?用户生成的PHP代码


PHP structured variable and User-generated validation rules? User-generated PHP code?

背景:

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