首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >验证php对象字段是否为空值的更好方法

验证php对象字段是否为空值的更好方法
EN

Stack Overflow用户
提问于 2018-06-04 06:49:02
回答 1查看 37关注 0票数 0

我有一个名为$product的php对象,它有几个字符串属性。现在我想检查它的字段的值,看看它们是否为空,但我不得不用很多if语句来做这件事,像下面这样,有没有更聪明的方法?,我不介意使用库

代码语言:javascript
复制
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 Framwork3.0,如果这对我尝试验证的所有字段都是字符串有帮助的话

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-04 07:37:26

如果作为键/值数组的返回值为空,则可以使用函数名/ error对它们进行循环。

看起来像这样:

代码语言:javascript
复制
 <?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())) {代码行所做的事情。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50671670

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档