我有一个名为$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 Framwork3.0,如果这对我尝试验证的所有字段都是字符串有帮助的话
发布于 2018-06-04 07:37:26
如果作为键/值数组的返回值为空,则可以使用函数名/ error对它们进行循环。
看起来像这样:
<?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())) {
代码行所做的事情。
https://stackoverflow.com/questions/50671670
复制相似问题