Пишу простой Url Shortener используя ООП и MVC (для тренировки). Чувствую что где-то навелосипедил. Вроде как не правильно писать всё в одном методе и лучше разделять на методы отвечающие за конкретное действие, но чувствую что неправильно в валидаторе кучу exit'ов и include'ов. Новичок еще, подскажите как правильно или как сделали бы вы.
Модель:
public function validateUrl($request)
{
if(isset($request['addurl'])) {
if(!empty($request['url'])) {
if (strpos($request['url'],'http') === false) {
$error = 'Введите корректный URL начинающийся с http(s)';
include_once (ROOT . '/app/Views/index.phtml');
exit();
} else {
return $this;
}
} else {
$error = 'Вы ничего не ввели, введите URL адрес';
include_once (ROOT . '/app/Views/index.phtml');
exit();
}
}
}
public function addUrl($request)
{
$this->validateUrl($request);
$randomString = bin2hex(random_bytes(6));
$this->checkIfUrlExists($request['url'], $randomString);
include_once (ROOT . '/app/Views/index.phtml');
View:
<body>
<div class="container">
<h1 class="mt-4">Сокращатель ссылок</h1>
<h5 class="mt-4">Введите URL адрес и получите короткую ссылку:</h5>
<form action="/addurl/" method="post" class="form-group">
<div class="form-group">
<input type="text" name="url" placeholder="Введите url" class="form-control" <? echo !empty($request['url']) ? "value=\"" . $request['url'] . "\"" : null ?>>
</div>
<input type="submit" name="addurl">
</form>
<p><? if (!empty($error)) echo $error; ?></p>
</div>
</body>