Лучший способ проверить поля объекта php для пустых значений - PullRequest
0 голосов
/ 04 июня 2018

У меня есть объект php, который я назвал $ product, он имеет несколько строковых свойств.Теперь я хочу проверить значения его полей, чтобы увидеть, являются ли они пустыми, но мне приходится делать это со многими операторами 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 голосов
/ 04 июня 2018

Вы могли бы зациклить их с именами функций / ошибками для печати, если возвращаемое значение пусто как массив ключ / значение.

Будет выглядеть примерно так:

 <?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 не подходит для этого, поэтому он должен использовать другой регистр.

Этот ответ объясняет, что я делаю со строкой if(isEmpty($product->$function())) {код.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...