Вот пример кода моего проекта. У меня есть личное портфолио, которое в основном представляет собой статическую страницу, запускающую этот простой PHP-скрипт для проверки формы и отправки электронного письма администратору.
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$flag = $_POST['FLAG'];
$name = trim(stripcslashes($_POST['name']));
$email = trim(stripcslashes($_POST['email']));
$message = trim(stripcslashes($_POST['message']));
$success = false;
$mail = new Mail($flag, $name, $email, $message, $config);
$result = $mail->validateFields();
if ($result) {
$errors = $result;
} elseif ($result == false) {
$mail->sendEmail();
$success = true;
}
}
Любая идея, как улучшить мой код?
Я использую swiftmailer и сторонний MTA (mailgun).
Класс MAIL имеет 2 метода: Validate и Send.
Метод validate используется для проверки полей и возвращает false, если ошибок не обнаружено, иначе возвращает массив с сообщениями об ошибках.
Отправка почты использует swiftmailer для отправки электронной почты. Любая идея, как сделать все лучше? Стоит ли что-то менять или все в порядке?
class Mail
{
public $flag = null;
public $name = null;
public $email = null;
public $message = null;
public $config = null;
public $errors = [];
function __construct($flag, $name, $email, $message, $config)
{
$this->flag = $flag;
$this->name = $name;
$this->email = $email;
$this->message = $message;
$this->config = $config;
}
public function validateFields()
{
if (!empty($this->flag)) {
$this->errors[] = 'SPAM FILTER ERROR =)';
}
if ( empty($this->name) | !preg_match('/^[a-zA-Z\s]+$/', $this->name)) {
$this->errors[] = 'Enter valid name';
}
if ( empty($this->email) | !filter_var($this->email, FILTER_VALIDATE_EMAIL)) {
$this->errors[] = 'Enter valid email address';
}
if ( empty($this->message) ) {
$this->errors[] = 'Please enter a message';
}
if ( empty($this->errors) ) {
return false;
} else {
return $this->errors;
}
}
public function sendEmail()
{
$transport = (new Swift_SmtpTransport("{$this->config['SMTP']}", 25))
->setUsername("{$this->config['USERNAME']}")
->setPassword("{$this->config['PASSWORD']}");
/// rest of email logic
}
}
Любые предложения будут очень признательны!
Спасибо.
добавьте еще несколько деталей, но я последую вашему совету и опубликую его в stackexchange ... даже не слышал об этом! Танос!






how to improve my code- очень широкий вопрос ... и код, который вы разместили, очень минимален. Возможно, лучше пройти проверку кода codereview.stackexchange.com