Как сократить код PHP?

158
23 марта 2019, 09:00

Вопрос новичка. Понимаю, что он может быть банальным, но всё же. Как можно сократить данный код PHP?

<?php
    if(!empty($_POST['name']) and !empty($_POST['phone'])){
        $name = trim(strip_tags($_POST['name']));
        $phone = trim(strip_tags($_POST['phone'])); 
        mail('yourmail@yourdomain.com', 'Письмо с адрес_вашего_сайта '.$_SERVER['SERVER_NAME'], 
        'Вам написал: '.$name.'<br />Его номер: '.$phone,"Content-type:text/html;charset=utf-8");
        $success = 'Сообщение отправлено';
        echo json_encode(array ('success' => $success));
    } 
?>
Answer 1

Я бы так переписал

function GetPostVar($name) {
  if (isset($_POST[$name])
    return trim(strip_tags($_POST['name']));
  return ''
}
$name = GetPostVar('name');
$phone = GetPostVar('phone');
if(!empty($name) and !empty($phone)) {
  mail(
    'yourmail@yourdomain.com',
    'Письмо с адрес_вашего_сайта ' . $_SERVER['SERVER_NAME'], 
    'Вам написал: '.$name.'<br />Его номер: '.$phone,"Content-type:text/html;charset=utf-8"
  );
  $success = 'Сообщение отправлено';
  echo json_encode(array ('success' => $success));
} 

В чем отличие от исходного кода?

  1. Вся логика чтения параметра из массива $_POST вынесена в одну функцию. Что позволяет в дальнейшем изменять эту логику в одном месте. Например, вы решите, что strip_tags лишнее. Тогда вы уберете эту функцию только в одном месте, а не в каждом чтении параметра
  2. Проверка !empty() делается не для исходного значения, а для значения, возвращенного функцией GetPostVar(). Таким образом исходная проверка для поля состоящего из одних пробелов не сработает, а моя сработает
READ ALSO
Высылка переменных из Javascript на e-mail

Высылка переменных из Javascript на e-mail

Есть у меня html страница с формами inputС помощью JS у меня генерируются некоторые переменные

162
Как решить задачи в E-olymp c помощью php?

Как решить задачи в E-olymp c помощью php?

Есть такой замечательный сайт: https://wwwe-olymp

148
Как в C++ определить разрешение изображения и поместить его в массив?

Как в C++ определить разрешение изображения и поместить его в массив?

Как определить разрешение изображения и поместить изображение в массив? Windows, Qt - я знаю только этот фреймворк

168
Сложность функций из cmath

Сложность функций из cmath

Как можно узнать сложность функций из <cmath>? Например, какая асимптотика у std::exp() или std::pow()? На cppreference не нашёл

177