更好地验证php对象的字段是否为空值

时间:2018-06-03 22:49:02

标签: php validation

我有一个名为$ product的php对象,它有几个字符串属性。 现在我想检查它们的字段的值,看看它们是否为空,但是我必须使用下面的许多if语句执行此操作,有更聪明的方法吗?我不介意使用库

private function validate(Product $product)
{


    if (isEmpty($product->country)) {

        throw New \Exception("country is empty");
    } elseif (isEmpty($product->getCategory())) {

        throw New \Exception("category is empty");
     } elseif (isEmpty($product->getSubCategory())) {

        throw New \Exception("subcategory is empty");
     } elseif (isEmpty($product->getCoolingType())) {

        throw New \Exception("category is empty");
    } elseif (isEmpty($product->getPackagingType())) {

        throw New \Exception("category is empty");
    } 


}

顺便说一下,如果有帮助,我正在使用symfony framwork 3.0 我试图验证的所有字段都是字符串

1 个答案:

答案 0 :(得分:1)

如果返回值为空,则可以使用函数名/错来循环它们作为键/值数组。

看起来像这样:

 <?php
 private function validate(Product $product)
 {
     $functions = array("getCategory" => "category",
                         "getSubCategory" => "subcategory"
                        // as many function_name => error messages here as you want
     );

     foreach($functions as $function_name => $error) {
         if(isEmpty($product->$function())) {
           throw New \Exception("$error is empty");
         }
     }
}

请注意,您的第一个示例$product->country不适用于此,因此必须使用其他案例。

This answer解释了我使用if(isEmpty($product->$function())) {代码行所做的事情。