У js есть jquery, а у php что?
HttpFoundation - это можно сказать стандарт для обработки запросов. Используется в Symfony, Laravel, Silex и еще куча где.
Doctrine - по моему опыту это лучшая система для работы с БД. Если еще не смотрели - настоятельно рекомендую. А системы реализующие ActiveRecord (если у вас проект не на пару дней) - лучше не используйте, почему - см.
тут.
Monolog - это библиотека логгирования, практически не имеет аналогов по функциональности.
Symfony Console Component - очень гибкий компонент для реализации консольных приложений.
Например, такая банальность, как валидация форм: у меня есть собственные наработки и я могу их использовать, но ведь они далеки от идеала.
Разные кейсы предполагают разные решения. В случае высоких требований к производительности, тестируемости и защищенности часто оптимален вариант типа этого:
/**
* @Route("/profile/{id}", name="getProfile")
* @Method({"GET"})
* @param Request $request
* @return JsonResponse
*/
public function getProfileAction(Request $request): JsonResponse
{
try {
$id = $request->attributes->get('id');
if (is_null($id)) {
return new JsonResponse("Param 'id' is required", JsonResponse::HTTP_BAD_REQUEST);
} elseif (!is_string($id)) {
return new JsonResponse("Param 'id' must be string", JsonResponse::HTTP_BAD_REQUEST);
} elseif (!ctype_digit($id)) {
return new JsonResponse("Param 'id' must be digit", JsonResponse::HTTP_BAD_REQUEST);
}
// Business logic here
return new JsonResponse();
} catch (\Throwable $exception) {
return new JsonResponse($exception->getMessage(), JsonResponse::HTTP_BAD_REQUEST);
}
}
Да, кода получается МНОГО, но такой подход очень гибок и производителен. Есть альтернативный вариант с использованием библиотеки
ko-ko-ko/php-asserttry {
$id = $request->attributes->get('id');
Assert::assert($id, 'id')->notNull()->string()->digit();
} catch (\Throwable $exception) {
return new JsonResponse($exception->getMessage(), JsonResponse::HTTP_BAD_REQUEST);
}
try {
// Business logic here
return new JsonResponse();
} catch (\Throwable $exception) {
return new JsonResponse($exception->getMessage(), JsonResponse::HTTP_BAD_REQUEST);
}
Есть ли подобные отработанные решения в фреймворках, они дают что-то кроме "каркаса"?
Есть, практически у каждого фреймворка свои решения со своими плюсами и минусами.
И почему нет библиотек популярных для php?
см. Самое началом моего ответа, там список популярных библиотек.