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

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

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

public function registerUser ($data) {
			$this->prepareData($data);
			$this->checkMail($data['email']);
			$this->checkData($data);
// После проверок - сама вставка
			$this->createUser($data);
		}
  • Вопрос задан
  • 2294 просмотра
Подписаться 2 Оценить Комментировать
Решения вопроса 2
@Nc_Soft
Эксепшены кидай, в разы лучше и проще будет.
Ответ написан
Комментировать
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;
      }
}
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@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;
}

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

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

Похожие вопросы