DX: apply rector rules up to php8.0

This commit is contained in:
2023-04-15 01:05:37 +02:00
parent d8870e906f
commit dde3002100
714 changed files with 2348 additions and 9263 deletions

View File

@@ -36,11 +36,8 @@ abstract class AbstractCRUDController extends AbstractController
/**
* get the role given from the config.
*
* @param mixed $entity
* @param mixed $_format
*/
protected function getRoleFor(string $action, Request $request, $entity, $_format): string
protected function getRoleFor(string $action, Request $request, mixed $entity, mixed $_format): string
{
$actionConfig = $this->getActionConfig($action);
@@ -135,7 +132,7 @@ abstract class AbstractCRUDController extends AbstractController
*
* @param mixed $_format
*/
protected function countEntities(string $action, Request $request, $_format): int
protected function countEntities(string $action, Request $request, mixed $_format): int
{
return $this->buildQueryEntities($action, $request)
->select('COUNT(e)')
@@ -171,10 +168,8 @@ abstract class AbstractCRUDController extends AbstractController
* get the instance of the entity with the given id.
*
* @throw Symfony\Component\HttpKernel\Exception\NotFoundHttpException if the object is not found
*
* @param mixed $action
*/
protected function getEntity($action, string $id, Request $request): object
protected function getEntity(mixed $action, string $id, Request $request): object
{
$e = $this
->getDoctrine()
@@ -205,10 +200,8 @@ abstract class AbstractCRUDController extends AbstractController
/**
* Get the result of the query.
*
* @param mixed $query
*/
protected function getQueryResult(string $action, Request $request, string $_format, int $totalItems, PaginatorInterface $paginator, $query)
protected function getQueryResult(string $action, Request $request, string $_format, int $totalItems, PaginatorInterface $paginator, mixed $query)
{
return $query->getQuery()->getResult();
}
@@ -220,41 +213,32 @@ abstract class AbstractCRUDController extends AbstractController
/**
* Called on post check ACL.
*
* @param mixed $entity
*/
protected function onPostCheckACL(string $action, Request $request, string $_format, $entity): ?Response
protected function onPostCheckACL(string $action, Request $request, string $_format, mixed $entity): ?Response
{
return null;
}
/**
* Called on post fetch entity.
*
* @param mixed $entity
* @param mixed $_format
*/
protected function onPostFetchEntity(string $action, Request $request, $entity, $_format): ?Response
protected function onPostFetchEntity(string $action, Request $request, mixed $entity, mixed $_format): ?Response
{
return null;
}
/**
* Method used by indexAction.
*
* @param mixed $query
*/
protected function onPostIndexBuildQuery(string $action, Request $request, string $_format, int $totalItems, PaginatorInterface $paginator, $query): ?Response
protected function onPostIndexBuildQuery(string $action, Request $request, string $_format, int $totalItems, PaginatorInterface $paginator, mixed $query): ?Response
{
return null;
}
/**
* Method used by indexAction.
*
* @param mixed $entities
*/
protected function onPostIndexFetchQuery(string $action, Request $request, string $_format, int $totalItems, PaginatorInterface $paginator, $entities): ?Response
protected function onPostIndexFetchQuery(string $action, Request $request, string $_format, int $totalItems, PaginatorInterface $paginator, mixed $entities): ?Response
{
return null;
}
@@ -274,11 +258,8 @@ abstract class AbstractCRUDController extends AbstractController
/**
* Add ordering fields in the query build by self::queryEntities.
*
* @param mixed $query
* @param mixed $_format
*/
protected function orderQuery(string $action, $query, Request $request, PaginatorInterface $paginator, $_format)
protected function orderQuery(string $action, mixed $query, Request $request, PaginatorInterface $paginator, mixed $_format)
{
return $query;
}

View File

@@ -32,31 +32,18 @@ class ApiController extends AbstractCRUDController
/**
* Base method for handling api action.
*
* @param mixed $id
* @param string $_format
*
* @return void
*/
public function entityApi(Request $request, $id, ?string $_format = 'json'): Response
public function entityApi(Request $request, mixed $id, ?string $_format = 'json'): Response
{
switch ($request->getMethod()) {
case Request::METHOD_GET:
case Request::METHOD_HEAD:
return $this->entityGet('_entity', $request, $id, $_format);
case Request::METHOD_PUT:
case Request::METHOD_PATCH:
return $this->entityPut('_entity', $request, $id, $_format);
case Request::METHOD_POST:
return $this->entityPostAction('_entity', $request, $id);
case Request::METHOD_DELETE:
return $this->entityDelete('_entity', $request, $id, $_format);
default:
throw new BadRequestHttpException('This method is not implemented');
}
return match ($request->getMethod()) {
Request::METHOD_GET, Request::METHOD_HEAD => $this->entityGet('_entity', $request, $id, $_format),
Request::METHOD_PUT, Request::METHOD_PATCH => $this->entityPut('_entity', $request, $id, $_format),
Request::METHOD_POST => $this->entityPostAction('_entity', $request, $id),
Request::METHOD_DELETE => $this->entityDelete('_entity', $request, $id, $_format),
default => throw new BadRequestHttpException('This method is not implemented'),
};
}
public function entityDelete($action, Request $request, $id, string $_format): Response
@@ -115,13 +102,10 @@ class ApiController extends AbstractCRUDController
public function entityPost(Request $request, $_format): Response
{
switch ($request->getMethod()) {
case Request::METHOD_POST:
return $this->entityPostAction('_entity', $request, $_format);
default:
throw new BadRequestHttpException('This method is not implemented');
}
return match ($request->getMethod()) {
Request::METHOD_POST => $this->entityPostAction('_entity', $request, $_format),
default => throw new BadRequestHttpException('This method is not implemented'),
};
}
public function entityPut($action, Request $request, $id, string $_format): Response
@@ -199,14 +183,10 @@ class ApiController extends AbstractCRUDController
*/
public function indexApi(Request $request, string $_format)
{
switch ($request->getMethod()) {
case Request::METHOD_GET:
case REQUEST::METHOD_HEAD:
return $this->indexApiAction('_index', $request, $_format);
default:
throw $this->createNotFoundException('This method is not supported');
}
return match ($request->getMethod()) {
Request::METHOD_GET, REQUEST::METHOD_HEAD => $this->indexApiAction('_index', $request, $_format),
default => throw $this->createNotFoundException('This method is not supported'),
};
}
public function onBeforeSerialize(string $action, Request $request, $_format, $entity): ?Response
@@ -242,7 +222,7 @@ class ApiController extends AbstractCRUDController
* @throw BadRequestException if unable to deserialize the posted data
* @throw BadRequestException if the method is not POST or DELETE
*/
protected function addRemoveSomething(string $action, $id, Request $request, string $_format, string $property, string $postedDataType, array $postedDataContext = [], bool $forcePersist = false): Response
protected function addRemoveSomething(string $action, mixed $id, Request $request, string $_format, string $property, string $postedDataType, array $postedDataContext = [], bool $forcePersist = false): Response
{
$entity = $this->getEntity($action, $id, $request);
@@ -277,23 +257,11 @@ class ApiController extends AbstractCRUDController
'data: %s', $e->getMessage()), $e, 0);
}
switch ($request->getMethod()) {
case Request::METHOD_DELETE:
// oups... how to use property accessor to remove element ?
/* @phpstan-ignore-next-line as we do not find a simpler way to do this */
$entity->{'remove' . ucfirst($property)}($postedData);
break;
case Request::METHOD_POST:
/* @phpstan-ignore-next-line as we do not find a simpler way to do this */
$entity->{'add' . ucfirst($property)}($postedData);
break;
default:
throw new BadRequestHttpException('this method is not supported');
}
match ($request->getMethod()) {
Request::METHOD_DELETE => $entity->{'remove' . ucfirst($property)}($postedData),
Request::METHOD_POST => $entity->{'add' . ucfirst($property)}($postedData),
default => throw new BadRequestHttpException('this method is not supported'),
};
$errors = $this->validate($action, $request, $_format, $entity, [$postedData]);
@@ -319,21 +287,16 @@ class ApiController extends AbstractCRUDController
if ($response instanceof Response) {
return $response;
}
switch ($request->getMethod()) {
case Request::METHOD_DELETE:
return $this->json('', Response::HTTP_OK);
case Request::METHOD_POST:
return $this->json(
$postedData,
Response::HTTP_OK,
[],
$this->getContextForSerializationPostAlter($action, $request, $_format, $entity, [$postedData])
);
}
throw new Exception('Unable to handle such request method.');
return match ($request->getMethod()) {
Request::METHOD_DELETE => $this->json('', Response::HTTP_OK),
Request::METHOD_POST => $this->json(
$postedData,
Response::HTTP_OK,
[],
$this->getContextForSerializationPostAlter($action, $request, $_format, $entity, [$postedData])
),
default => throw new Exception('Unable to handle such request method.'),
};
}
/**
@@ -376,7 +339,7 @@ class ApiController extends AbstractCRUDController
* @param mixed $id
* @param mixed $_format
*/
protected function entityGet(string $action, Request $request, $id, $_format = 'html'): Response
protected function entityGet(string $action, Request $request, mixed $id, mixed $_format = 'html'): Response
{
$entity = $this->getEntity($action, $id, $request);
@@ -474,18 +437,11 @@ class ApiController extends AbstractCRUDController
protected function getContextForSerialization(string $action, Request $request, string $_format, $entity): array
{
switch ($request->getMethod()) {
case Request::METHOD_GET:
return ['groups' => ['read']];
case Request::METHOD_PUT:
case Request::METHOD_PATCH:
case Request::METHOD_POST:
return ['groups' => ['write']];
default:
throw new LogicException('get context for serialization is not implemented for this method');
}
return match ($request->getMethod()) {
Request::METHOD_GET => ['groups' => ['read']],
Request::METHOD_PUT, Request::METHOD_PATCH, Request::METHOD_POST => ['groups' => ['write']],
default => throw new LogicException('get context for serialization is not implemented for this method'),
};
}
/**
@@ -496,7 +452,7 @@ class ApiController extends AbstractCRUDController
*
* @param mixed $entity
*/
protected function getContextForSerializationPostAlter(string $action, Request $request, string $_format, $entity, array $more = []): array
protected function getContextForSerializationPostAlter(string $action, Request $request, string $_format, mixed $entity, array $more = []): array
{
return ['groups' => ['read']];
}
@@ -533,7 +489,7 @@ class ApiController extends AbstractCRUDController
* @param string $action
* @param mixed $_format
*/
protected function indexApiAction($action, Request $request, $_format)
protected function indexApiAction($action, Request $request, mixed $_format)
{
$this->onPreIndex($action, $request, $_format);
@@ -611,10 +567,8 @@ class ApiController extends AbstractCRUDController
/**
* Serialize collections.
*
* @param mixed $entities
*/
protected function serializeCollection(string $action, Request $request, string $_format, PaginatorInterface $paginator, $entities): Response
protected function serializeCollection(string $action, Request $request, string $_format, PaginatorInterface $paginator, mixed $entities): Response
{
$model = new Collection($entities, $paginator);

View File

@@ -62,17 +62,15 @@ class CRUDController extends AbstractController
*
* @param mixed $id
*/
public function edit(Request $request, $id): Response
public function edit(Request $request, mixed $id): Response
{
return $this->formEditAction('edit', $request, $id);
}
/**
* Get the context for the serialization.
*
* @param mixed $entity
*/
public function getContextForSerialization(string $action, Request $request, $entity, string $_format): array
public function getContextForSerialization(string $action, Request $request, mixed $entity, string $_format): array
{
return [];
}
@@ -125,7 +123,7 @@ class CRUDController extends AbstractController
*
* @param mixed $id
*/
public function view(Request $request, $id): Response
public function view(Request $request, mixed $id): Response
{
return $this->viewAction('view', $request, $id);
}
@@ -188,7 +186,7 @@ class CRUDController extends AbstractController
*
* @throws \Symfony\Component\Security\Core\Exception\AccessDeniedHttpException
*/
protected function checkACL(string $action, $entity)
protected function checkACL(string $action, mixed $entity)
{
$this->denyAccessUnlessGranted($this->getRoleFor($action), $entity);
}
@@ -228,7 +226,7 @@ class CRUDController extends AbstractController
* @param mixed $entity
* @param string $formClass
*/
protected function createFormFor(string $action, $entity, ?string $formClass = null, array $formOptions = []): FormInterface
protected function createFormFor(string $action, mixed $entity, ?string $formClass = null, array $formOptions = []): FormInterface
{
$formClass ??= $this->getFormClassFor($action);
@@ -491,7 +489,7 @@ class CRUDController extends AbstractController
*
* @throws \Symfony\Component\HttpKernel\Exception\NotFoundHttpException
*/
protected function formEditAction(string $action, Request $request, $id, ?string $formClass = null, array $formOptions = []): Response
protected function formEditAction(string $action, Request $request, mixed $id, ?string $formClass = null, array $formOptions = []): Response
{
$entity = $this->getEntity($action, $id, $request);
@@ -572,29 +570,15 @@ class CRUDController extends AbstractController
* Generate a success message when a form could be flushed successfully.
*
* @param string $action
* @param mixed $entity
*/
protected function generateFormSuccessMessage($action, $entity): string
protected function generateFormSuccessMessage($action, mixed $entity): string
{
switch ($action) {
case 'edit':
$msg = 'crud.edit.success';
break;
case 'new':
$msg = 'crud.new.success';
break;
case 'delete':
$msg = 'crud.delete.success';
break;
default:
$msg = 'crud.default.success';
}
$msg = match ($action) {
'edit' => 'crud.edit.success',
'new' => 'crud.new.success',
'delete' => 'crud.delete.success',
default => 'crud.default.success',
};
return $this->getTranslator()->trans($msg);
}
@@ -652,11 +636,10 @@ class CRUDController extends AbstractController
* get the instance of the entity with the given id.
*
* @param string $id
* @param mixed $action
*
* @return object
*/
protected function getEntity($action, $id, Request $request): ?object
protected function getEntity(mixed $action, $id, Request $request): ?object
{
return $this->getDoctrine()
->getRepository($this->getEntityClass())
@@ -763,33 +746,22 @@ class CRUDController extends AbstractController
*
* @return string the path to the template
*/
protected function getTemplateFor($action, $entity, Request $request)
protected function getTemplateFor($action, mixed $entity, Request $request)
{
if ($this->hasCustomTemplate($action, $entity, $request)) {
return $this->getActionConfig($action)['template'];
}
switch ($action) {
case 'new':
return '@ChillMain/CRUD/new.html.twig';
case 'edit':
return '@ChillMain/CRUD/edit.html.twig';
case 'index':
return '@ChillMain/CRUD/index.html.twig';
case 'view':
return '@ChillMain/CRUD/view.html.twig';
case 'delete':
return '@ChillMain/CRUD/delete.html.twig';
default:
throw new LogicException("the view for action {$action} is not "
. 'defined. You should override ' . __METHOD__ . ' to add this '
. 'action');
}
return match ($action) {
'new' => '@ChillMain/CRUD/new.html.twig',
'edit' => '@ChillMain/CRUD/edit.html.twig',
'index' => '@ChillMain/CRUD/index.html.twig',
'view' => '@ChillMain/CRUD/view.html.twig',
'delete' => '@ChillMain/CRUD/delete.html.twig',
default => throw new LogicException("the view for action {$action} is not "
. 'defined. You should override ' . __METHOD__ . ' to add this '
. 'action'),
};
}
protected function getTranslator(): TranslatorInterface
@@ -909,22 +881,17 @@ class CRUDController extends AbstractController
*
* @return \Symfony\Component\HttpFoundation\RedirectResponse
*/
protected function onBeforeRedirectAfterSubmission(string $action, $entity, FormInterface $form, Request $request)
protected function onBeforeRedirectAfterSubmission(string $action, mixed $entity, FormInterface $form, Request $request)
{
$next = $request->request->get('submit', 'save-and-close');
switch ($next) {
case 'save-and-close':
return $this->redirectToRoute('chill_crud_' . $this->getCrudName() . '_index');
case 'save-and-new':
return $this->redirectToRoute('chill_crud_' . $this->getCrudName() . '_new', $request->query->all());
default:
return $this->redirectToRoute('chill_crud_' . $this->getCrudName() . '_view', [
'id' => $entity->getId(),
]);
}
return match ($next) {
'save-and-close' => $this->redirectToRoute('chill_crud_' . $this->getCrudName() . '_index'),
'save-and-new' => $this->redirectToRoute('chill_crud_' . $this->getCrudName() . '_new', $request->query->all()),
default => $this->redirectToRoute('chill_crud_' . $this->getCrudName() . '_view', [
'id' => $entity->getId(),
]),
};
}
protected function onFormValid(string $action, object $entity, FormInterface $form, Request $request)
@@ -958,19 +925,15 @@ class CRUDController extends AbstractController
/**
* method used by indexAction.
*
* @param mixed $query
*/
protected function onPostIndexBuildQuery(string $action, Request $request, int $totalItems, PaginatorInterface $paginator, $query)
protected function onPostIndexBuildQuery(string $action, Request $request, int $totalItems, PaginatorInterface $paginator, mixed $query)
{
}
/**
* method used by indexAction.
*
* @param mixed $entities
*/
protected function onPostIndexFetchQuery(string $action, Request $request, int $totalItems, PaginatorInterface $paginator, $entities)
protected function onPostIndexFetchQuery(string $action, Request $request, int $totalItems, PaginatorInterface $paginator, mixed $entities)
{
}
@@ -1091,7 +1054,7 @@ class CRUDController extends AbstractController
* @param mixed $id
* @param mixed $_format
*/
protected function viewAction(string $action, Request $request, $id, $_format = 'html'): Response
protected function viewAction(string $action, Request $request, mixed $id, mixed $_format = 'html'): Response
{
$entity = $this->getEntity($action, $id, $request);