@iSensetivity
бухгалтер, програміст-самоук

Как определить успешность выполнения подфункций в классе?

В общем пишу класс для работы с пользователями. Внешне я вызываю публичную функцию registerUser, которая в свою очередь вызывает ряд подфункций для обработки и валидации данных. Каждая из таких подфункций возвращает true или false. Теперь вопрос, как мне сделать грамотную проверку того, что мне возвращают функции.
Ибо уме только огород с IF.

public function registerUser ($data) {
			$this->prepareData($data);
			$this->checkMail($data['email']);
			$this->checkData($data);
// После проверок - сама вставка
			$this->createUser($data);
		}
  • Вопрос задан
  • 2292 просмотра
Решения вопроса 2
socengel
@socengel
7 лет native php в продакшене, онлайн 20000+,
Если у тебя все реально так работает то тут печаль беда а не код. если ты конечно не ссылками переменные получаешь.
public function registerUser ( $data  ) { // Обращаем внимание $data

      /* от такого кода ничего не изменится
      $this->prepareData($data);
      $this->checkMail($data['email']);
      $this->checkData($data);
      */

      $this->createUser( $data ); // Обращаем внимание $data
    }

я бы написал так
public function registerUser ( $raw_data  ) 
{

      $data = $this->prepareData($raw_data);

      if ( $this->checkMail($data['email']) && $this->checkData($data) ) 
      {
          $this->createUser( $data );
      }
      else
      {
           return FALSE;
      }
}
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
@TEINNSEI_J
Оператор if для этого и преднозначен. Чтобы проверять. Другой вариант решения использовать swith или ?. Можно так же сделать одним if. К примеру:
public function registerUser ($data) {
      $pd = $this->prepareData($data);
      $cm = $this->checkMail($data['email']);
      $cd = $this->checkData($data);
      if($pd ==false || $cm == false || $cd==false){
}
// После проверок - сама вставка
      $this->createUser($data);
    }
Ответ написан
OlegLazarenko
@OlegLazarenko
public function registerUser ($data) {
  $res = 
    $this->prepareData($data) &&
    $this->checkMail($data['email']) &&
    $this->checkData($data);
  $res ? $this->createUser($data) : null;
}

Коротко и красиво, но читабельность страдает
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
11 авг. 2020, в 00:34
10000 руб./за проект
10 авг. 2020, в 23:01
1500 руб./за проект
10 авг. 2020, в 19:19
20000 руб./за проект