我有一个名为$ 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 我试图验证的所有字段都是字符串
答案 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())) {
代码行所做的事情。