Всем привет! В этом материале рассмотрим некоторые советы по использованию if-else условий в PHP .

Советы по использованию условий в PHP.

Всем привет! В этом материале рассмотрим некоторые советы по использованию if-else условий в PHP.

Думаю, никто не будет спорить с тем, что условия используются при разработке очень часто. Казалось бы, все просто. Но зачастую из-за этой простоты разработчики загромождают свой код и его становится трудно читать. Сегодня рассмотрим некоторые советы, которые помогут вам писать код правильно и чисто.

Первый пример

Давайте сразу перейдем к первому примеру.

class User {
  public function fullname() {
   if($this->first_name && $this->last_name) {
    return $this->first_name.' '.$this->last_name;
   }

   return null;
  }
}

Здесь у нас есть класс User, где мы написали метод, который проверяет, существуют ли имя и фамилия, и, если да, то возвращает их. Если же условие не выполняется, то возвращается null.

Давайте перепишем этот код следующим образом:

class User {
  public function fullname() {
   if(!$this->first_name || !$this->last_name) {
    return null;
   }

   // 2-е условие
   // 3-е условие
   // 4-е условие

   return $this->first_name.' '.$this->last_name;
  }
}

Теперь мы проверяем имя и фамилию на отсутствие значений и возвращаем null, если условие выполняется. Если же условия не выполняются, возвращаем наше значение имени и фамилии.

Почему этот подход лучше? Представьте, что у нас не одна проверка, а несколько. В первом случае, если проверка проходит, мы должны будем проверить вернувшееся значение на другое условие, потом на третьте и так далее. У нас будет большая вложенность, что явно ухудшит читаемость кода.

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

Второй пример

Давайте перейдем к более сложному примеру: рассмотрим конструкцию if-else.

if() {
  if() {
   if() {

   }
  }
} else {

}

Думаю, вы встречали такую конструкцию. Это самое обычное решение, которое использует большинство разработчиков, однако такой код достаточно трудно читать и исправлять. Чтобы вы поняли, почему, а также наглядно увидели, как можно написать лучше, давайте рассмотрим пример, где нам нужно загрузить файлы на сервер.

if(isset($_POST['file'])) {
  if(in_array($file_extension, $allowed_file_extensions)) {
   // загружаем файл
  } else {
   return; // ошибка
  }
} else {
  return; // ошибка
}

Здесь мы проверяем файл на существование, затем проверяем, существует ли расширение файла в массиве допустимых значений, и загружаем его. Если какая-либо проверка не прошла, то возвращаем ошибку.

Это всего лишь простой пример, в реальном проекте этих проверок будет очень много, соответственно, вы можете представить, что будет твориться в коде. Редактировать код, где куча вложенностей и ответвлений очень даже трудно. Как же его можно улучшить? Давайте посмотрим:

if(!isset($_POST['file'])) {
  return; // ошибка
}

if(!in_array($file_extension, $allowed_file_extensions)) {
  return; // ошибка
}

// загружаем файл

Здесь мы снова идем от обратного: мы проверяем файл на отсутствие и возвращаем ошибку, если условие выполняется. Потом также поступаем с расширением. Точно так же мы писали бы все другие необходимые нам проверки, а уже потом, если все прошло успешно, то загружаем файл. Такой код выглядит намного лучше и понятнее.

Заключение

Итак, сегодня мы рассмотрели два примера и пришли к выводу, что лучше всего возвращать ожидаемый результат в конце, а все необходимые проверки делать перед этим. Таким образом мы не будем загромождать код, а это благоприятно скажется на его поддержке и понимании.

А на этом у меня все. Спасибо за внимание!