Я лично знаком с людьми, работающими с хайлоад проектами на ларе
Лара не уступает симфони, как и симфони ларе.
Есть один знакомый, вбивающий в Гугл запрос "чем плох laravel", а после с пеной у рта доказывает абстрактную правдивость прочитанного.
public function createArticleAction(Request $request, ArticleRepository $articleRepository): Response
{
$title = $request->request->get('title');
$body = $request->request->get('body');
if (is_null($title)) {
return new Response('Parameter "title" is required', Response::HTTP_BAD_REQUEST);
} elseif (!is_string($title)) {
return new Response('Parameter "title" must be string', Response::HTTP_BAD_REQUEST);
} elseif (strlen($title) < Article::TITLE_MIN_LENGHT) {
return new Response('Parameter "title" must be not empty', Response::HTTP_BAD_REQUEST);
} elseif (strlen($title) > Article::TITLE_MAX_LENGHT) {
return new Response('Parameter "title" too long', Response::HTTP_BAD_REQUEST);
}
if (is_null($body)) {
return new Response('Parameter "body" is required', Response::HTTP_BAD_REQUEST);
} elseif (!is_string($body)) {
return new Response('Parameter "body" must be string', Response::HTTP_BAD_REQUEST);
}
$article = $articleRepository->findByTitle($title);
if (!is_null($article)) {
return new Response('Parameter "title" must be uniq', Response::HTTP_BAD_REQUEST);
}
// Your bussines logic
}
class Digit
{
public const FIRST = 1;
public const SECOND = 1;
private $value;
public function __construct(int $value)
{
if (!in_array($value, [self::FIRST, self::SECOND)) {
throw new \InvalidArgumentException(sprintf('Invalid digit value: "%d"'));
}
$this->value = $value;
}
public function getValue(): int
{
return $this->value;
}
}
Если же вы рендерите страницу каждый раз полностью - что я могу сказать, страдайте)) В любом случае перед рендерингом вы каким-то образом подготавливаете данные для рендеринга шаблона. Ошибка в этом случае - дописывается к этим данным.