Your project must not contain invalid function or method calls 5

More information: https://insight.symfony.com/what-we-analyse/php.invalid_call

  1. $this->entityManager->flush();
  2. $this->bus->dispatch(new SendContactEmail(
  3. $data->getName(),
  4. $data->getEmail(),
  5. $data->getMessage(),
    Cannot call method getMessage() on mixed.
    Time to fix: about 9 minutes
    Read doc Permalink Copy Prompt
    Last edited by Luigi Gandemer
  6. $data->getId(),
  7. ));
  8. return $data;
  9. }
  1. $this->bus->dispatch(new SendContactEmail(
  2. $data->getName(),
  3. $data->getEmail(),
  4. $data->getMessage(),
  5. $data->getId(),
    Cannot call method getId() on mixed.
    Time to fix: about 9 minutes
    Read doc Permalink Copy Prompt
    Last edited by Luigi Gandemer
  6. ));
  7. return $data;
  8. }
  9. }
  1. {
  2. $this->entityManager->persist($data);
  3. $this->entityManager->flush();
  4. $this->bus->dispatch(new SendContactEmail(
  5. $data->getName(),
    Cannot call method getName() on mixed.
    Time to fix: about 9 minutes
    Read doc Permalink Copy Prompt
    Last edited by Luigi Gandemer
  6. $data->getEmail(),
  7. $data->getMessage(),
  8. $data->getId(),
  9. ));
  1. private readonly MessageBusInterface $bus,
  2. ) {}
  3. public function process(mixed $data, Operation $operation, array $uriVariables = [], array $context = []): Contact
  4. {
  5. $this->entityManager->persist($data);
    Parameter #1 $object of method Doctrine\Persistence\ObjectManager::persist() expects object, mixed given.
    Time to fix: about 9 minutes
    Read doc Permalink Copy Prompt
    Last edited by Luigi Gandemer
  6. $this->entityManager->flush();
  7. $this->bus->dispatch(new SendContactEmail(
  8. $data->getName(),
  9. $data->getEmail(),
  1. $this->entityManager->persist($data);
  2. $this->entityManager->flush();
  3. $this->bus->dispatch(new SendContactEmail(
  4. $data->getName(),
  5. $data->getEmail(),
    Cannot call method getEmail() on mixed.
    Time to fix: about 9 minutes
    Read doc Permalink Copy Prompt
    Last edited by Luigi Gandemer
  6. $data->getMessage(),
  7. $data->getId(),
  8. ));
  9. return $data;

Your project must not contain invalid instantiations 4

More information: https://insight.symfony.com/what-we-analyse/php.invalid_instantiation

  1. $this->entityManager->persist($data);
  2. $this->entityManager->flush();
  3. $this->bus->dispatch(new SendContactEmail(
  4. $data->getName(),
  5. $data->getEmail(),
    Parameter #2 $email of class App\Message\SendContactEmail constructor expects string, mixed given.
    Time to fix: about 1 hour
    Read doc Permalink Copy Prompt
    Last edited by Luigi Gandemer
  6. $data->getMessage(),
  7. $data->getId(),
  8. ));
  9. return $data;
  1. $this->entityManager->flush();
  2. $this->bus->dispatch(new SendContactEmail(
  3. $data->getName(),
  4. $data->getEmail(),
  5. $data->getMessage(),
    Parameter #3 $message of class App\Message\SendContactEmail constructor expects string, mixed given.
    Time to fix: about 1 hour
    Read doc Permalink Copy Prompt
    Last edited by Luigi Gandemer
  6. $data->getId(),
  7. ));
  8. return $data;
  9. }
  1. {
  2. $this->entityManager->persist($data);
  3. $this->entityManager->flush();
  4. $this->bus->dispatch(new SendContactEmail(
  5. $data->getName(),
    Parameter #1 $name of class App\Message\SendContactEmail constructor expects string, mixed given.
    Time to fix: about 1 hour
    Read doc Permalink Copy Prompt
    Last edited by Luigi Gandemer
  6. $data->getEmail(),
  7. $data->getMessage(),
  8. $data->getId(),
  9. ));
  1. $this->bus->dispatch(new SendContactEmail(
  2. $data->getName(),
  3. $data->getEmail(),
  4. $data->getMessage(),
  5. $data->getId(),
    Parameter #4 $contactId of class App\Message\SendContactEmail constructor expects int, mixed given.
    Time to fix: about 1 hour
    Read doc Permalink Copy Prompt
    Last edited by Luigi Gandemer
  6. ));
  7. return $data;
  8. }
  9. }

Your project should not use invalid return types 5

More information: https://insight.symfony.com/what-we-analyse/php.invalid_return_typehint

  1. $data->getEmail(),
  2. $data->getMessage(),
  3. $data->getId(),
  4. ));
  5. return $data;
    Method App\State\ContactStateProcessor::process() should return App\Entity\Contact but returns mixed.
    Time to fix: about 9 minutes
    Read doc Permalink Copy Prompt
    Last edited by Luigi Gandemer
  6. }
  7. }
in src/Entity/User.php, line 54
  1. public function getRoles(): array
  2. {
  3. $roles = $this->roles;
  4. $roles[] = 'ROLE_USER';
  5. return array_unique($roles);
    Method App\Entity\User::getRoles() should return array<string> but returns array.
    Time to fix: about 9 minutes
    Read doc Permalink Copy Prompt
    Last edited by Luigi Gandemer
  6. }
  7. public function setRoles(array $roles): static
  8. {
  9. $this->roles = $roles;
in src/Entity/User.php, line 65
  1. return $this;
  2. }
  3. public function getUserIdentifier(): string
  4. {
  5. return (string) $this->username;
    Method App\Entity\User::getUserIdentifier() should return non-empty-string but returns string.
    Time to fix: about 9 minutes
    Read doc Permalink Copy Prompt
    Last edited by Luigi Gandemer
  6. }
  7. public function eraseCredentials(): void {}
  8. }
  1. parent::__construct($registry, Project::class);
  2. }
  3. public function findAllWithTechnologies(): array
  4. {
  5. return $this->createQueryBuilder('p')
    Method App\Repository\ProjectRepository::findAllWithTechnologies() should return array but returns mixed.
    Time to fix: about 9 minutes
    Read doc Permalink Copy Prompt
    Last edited by Luigi Gandemer
  6. ->addSelect('t', 'i')
  7. ->leftJoin('p.technologies', 't')
  8. ->leftJoin('p.image', 'i')
  9. ->orderBy('p.id', 'DESC')
  10. ->getQuery()
  1. parent::__construct($registry, Experience::class);
  2. }
  3. public function findAllWithTasks(): array
  4. {
  5. return $this->createQueryBuilder('e')
    Method App\Repository\ExperienceRepository::findAllWithTasks() should return array but returns mixed.
    Time to fix: about 9 minutes
    Read doc Permalink Copy Prompt
    Last edited by Luigi Gandemer
  6. ->addSelect('t')
  7. ->leftJoin('e.tasks', 't')
  8. ->orderBy('e.startedAt', 'DESC')
  9. ->getQuery()
  10. ->getResult();

Your project should not use invalid parameter and return typehints

More information: https://insight.symfony.com/what-we-analyse/php.invalid_typehint

in src/Entity/User.php, line 57
  1. $roles = $this->roles;
  2. $roles[] = 'ROLE_USER';
  3. return array_unique($roles);
  4. }
  5. public function setRoles(array $roles): static
    Method App\Entity\User::setRoles() has parameter $roles with no value type specified in iterable type array.
    Time to fix: about 9 minutes
    Read doc Permalink Copy Prompt
    Last edited by Luigi Gandemer
  6. {
  7. $this->roles = $roles;
  8. return $this;
  9. }

Your project should use return types 2

More information: https://insight.symfony.com/what-we-analyse/php.missing_return_typehint

  1. public function __construct(ManagerRegistry $registry)
  2. {
  3. parent::__construct($registry, Project::class);
  4. }
  5. public function findAllWithTechnologies(): array
    Method App\Repository\ProjectRepository::findAllWithTechnologies() return type has no value type specified in iterable type array.
    Time to fix: about 9 minutes
    Read doc Permalink Copy Prompt
    Last edited by Luigi Gandemer
  6. {
  7. return $this->createQueryBuilder('p')
  8. ->addSelect('t', 'i')
  9. ->leftJoin('p.technologies', 't')
  10. ->leftJoin('p.image', 'i')
  1. public function __construct(ManagerRegistry $registry)
  2. {
  3. parent::__construct($registry, Experience::class);
  4. }
  5. public function findAllWithTasks(): array
    Method App\Repository\ExperienceRepository::findAllWithTasks() return type has no value type specified in iterable type array.
    Time to fix: about 9 minutes
    Read doc Permalink Copy Prompt
    Last edited by Luigi Gandemer
  6. {
  7. return $this->createQueryBuilder('e')
  8. ->addSelect('t')
  9. ->leftJoin('e.tasks', 't')
  10. ->orderBy('e.startedAt', 'DESC')

Your project should contain a robots.txt file

More information: https://insight.symfony.com/what-we-analyse/web.missing_robots_txt

in public
The web root doesn't contain a robots.txt file. Search engines will ask for it, so not providing it will affect Search Engine ranking, and add load to the server needlessly.
Time to fix: about 1 hour
Read doc Permalink Copy Prompt
Last edited by Luigi Gandemer
  • public
    • images
    • index.php

Your project session configuration could expose your users data

More information: https://insight.symfony.com/what-we-analyse/symfony.request.session_cookie_default_name

The session cookie name is the default one, PHPSESSID. You should consider overwriting it thanks to session.name parameter (see the official documentation).
Time to fix: about 1 hour
Read doc Permalink Copy Prompt
Collective

Web applications should contain a site.webmanifest file

More information: https://insight.symfony.com/what-we-analyse/web.missing_web_manifest

in public
The web root doesn't contain a site.webmanifest file. The web app manifest provides information about a web application in a JSON text file, necessary for be presented to the user similarly to a native app
Time to fix: about 1 hour
Read doc Permalink Copy Prompt
Last edited by Luigi Gandemer
  • public
    • images
    • index.php

Text files should end with a valid new line character. 37

More information: https://insight.symfony.com/what-we-analyse/missing_e_o_l

  1. $data->getId(),
  2. ));
  3. return $data;
  4. }
  5. }
    This file ends with no newline character, or with a different newline character than other files in your project. It won't render properly on a terminal, and it's considered a bad practice.
    Time to fix: about 15 minutes
    Read doc Permalink Copy Prompt
    Last edited by Luigi Gandemer
  1. public function setStatus(string $status): static
  2. {
  3. $this->status = $status;
  4. return $this;
  5. }
  6. }
    This file ends with no newline character, or with a different newline character than other files in your project. It won't render properly on a terminal, and it's considered a bad practice.
    Time to fix: about 15 minutes
    Read doc Permalink Copy Prompt
    Last edited by Luigi Gandemer
in src/Entity/User.php, line 69
  1. {
  2. return (string) $this->username;
  3. }
  4. public function eraseCredentials(): void {}
  5. }
    This file ends with no newline character, or with a different newline character than other files in your project. It won't render properly on a terminal, and it's considered a bad practice.
    Time to fix: about 15 minutes
    Read doc Permalink Copy Prompt
    Last edited by Luigi Gandemer
in config/routes.yaml, line 15
  1. controllers:
  2. resource: routing.controllers
  3. api_login:
  4. path: /api/login
  5. methods: [POST]
    This file ends with no newline character, or with a different newline character than other files in your project. It won't render properly on a terminal, and it's considered a bad practice.
    Time to fix: about 15 minutes
    Read doc Permalink Copy Prompt
    Last edited by Luigi Gandemer
  1. ->leftJoin('p.image', 'i')
  2. ->orderBy('p.id', 'DESC')
  3. ->getQuery()
  4. ->getResult();
  5. }
  6. }
    This file ends with no newline character, or with a different newline character than other files in your project. It won't render properly on a terminal, and it's considered a bad practice.
    Time to fix: about 15 minutes
    Read doc Permalink Copy Prompt
    Last edited by Luigi Gandemer
  1. ->leftJoin('e.tasks', 't')
  2. ->orderBy('e.startedAt', 'DESC')
  3. ->getQuery()
  4. ->getResult();
  5. }
  6. }
    This file ends with no newline character, or with a different newline character than other files in your project. It won't render properly on a terminal, and it's considered a bad practice.
    Time to fix: about 15 minutes
    Read doc Permalink Copy Prompt
    Last edited by Luigi Gandemer
  1. $task->setExperience(null);
  2. }
  3. }
  4. return $this;
  5. }
  6. }
    This file ends with no newline character, or with a different newline character than other files in your project. It won't render properly on a terminal, and it's considered a bad practice.
    Time to fix: about 15 minutes
    Read doc Permalink Copy Prompt
    Last edited by Luigi Gandemer
  1. paths:
  2. '^/api/':
  3. allow_origin: ['%env(CORS_ALLOW_ORIGIN)%']
  4. allow_headers: ['Content-Type', 'Authorization']
  5. allow_methods: ['GET', 'POST', 'PUT', 'PATCH', 'DELETE', 'OPTIONS']
  6. max_age: 3600
    This file ends with no newline character, or with a different newline character than other files in your project. It won't render properly on a terminal, and it's considered a bad practice.
    Time to fix: about 15 minutes
    Read doc Permalink Copy Prompt
    Last edited by Luigi Gandemer
in src/Entity/Image.php, line 60
  1. $this->filename = $filename;
  2. return $this;
  3. }
  4. public function getUploadedAt(): DateTimeImmutable { return $this->uploadedAt; }
  5. }
    This file ends with no newline character, or with a different newline character than other files in your project. It won't render properly on a terminal, and it's considered a bad practice.
    Time to fix: about 15 minutes
    Read doc Permalink Copy Prompt
    Last edited by Luigi Gandemer
  1. failed:
  2. dsn: 'doctrine://default?queue_name=failed'
  3. routing:
  4. App\Message\SendContactEmail: async
    This file ends with no newline character, or with a different newline character than other files in your project. It won't render properly on a terminal, and it's considered a bad practice.
    Time to fix: about 15 minutes
    Read doc Permalink Copy Prompt
    Last edited by Luigi Gandemer
  1. null,
  2. ['groups' => ['technology:read']]
  3. ),
  4. ]);
  5. }
  6. }
    This file ends with no newline character, or with a different newline character than other files in your project. It won't render properly on a terminal, and it's considered a bad practice.
    Time to fix: about 15 minutes
    Read doc Permalink Copy Prompt
    Last edited by Luigi Gandemer
in src/Entity/Degree.php, line 92
  1. public function setImage(Image $image): static
  2. {
  3. $this->image = $image;
  4. return $this;
  5. }
  6. }
    This file ends with no newline character, or with a different newline character than other files in your project. It won't render properly on a terminal, and it's considered a bad practice.
    Time to fix: about 15 minutes
    Read doc Permalink Copy Prompt
    Last edited by Luigi Gandemer
in src/Entity/Project.php, line 117
  1. public function removeTechnology(Technology $technology): static
  2. {
  3. $this->technologies->removeElement($technology);
  4. return $this;
  5. }
  6. }
    This file ends with no newline character, or with a different newline character than other files in your project. It won't render properly on a terminal, and it's considered a bad practice.
    Time to fix: about 15 minutes
    Read doc Permalink Copy Prompt
    Last edited by Luigi Gandemer
in README.md, line 13
  1. | --------------------- |:-------------------------:|
  2. | API | http://localhost:8080 |
  3. | LiteSpeed Admin | http://localhost:7080 |
  4. | RabbitMQ UI | http://localhost:15672 |
  5. | Mailhog UI | http://localhost:8025 |
  6. | phpMyAdmin | http://localhost:8081 |
    This file ends with no newline character, or with a different newline character than other files in your project. It won't render properly on a terminal, and it's considered a bad practice.
    Time to fix: about 15 minutes
    Read doc Permalink Copy Prompt
    Last edited by Luigi Gandemer
in config/services.yaml, line 24
  1. arguments:
  2. $decorated: '@.inner'
  3. App\Service\ImageUploadService:
  4. arguments:
  5. $uploadDir: '%kernel.project_dir%/public/images'
    This file ends with no newline character, or with a different newline character than other files in your project. It won't render properly on a terminal, and it's considered a bad practice.
    Time to fix: about 15 minutes
    Read doc Permalink Copy Prompt
    Last edited by Luigi Gandemer
  1. ];
  2. }
  3. return $this->json($uploaded, 201);
  4. }
  5. }
    This file ends with no newline character, or with a different newline character than other files in your project. It won't render properly on a terminal, and it's considered a bad practice.
    Time to fix: about 15 minutes
    Read doc Permalink Copy Prompt
    Last edited by Luigi Gandemer
  1. {
  2. public function __construct(ManagerRegistry $registry)
  3. {
  4. parent::__construct($registry, Contact::class);
  5. }
  6. }
    This file ends with no newline character, or with a different newline character than other files in your project. It won't render properly on a terminal, and it's considered a bad practice.
    Time to fix: about 15 minutes
    Read doc Permalink Copy Prompt
    Last edited by Luigi Gandemer
  1. enable_re_doc: false
  2. enable_scalar: true
  3. mapping:
  4. paths:
  5. - '%kernel.project_dir%/src/Entity'
  6. - '%kernel.project_dir%/src/Controller'
    This file ends with no newline character, or with a different newline character than other files in your project. It won't render properly on a terminal, and it's considered a bad practice.
    Time to fix: about 15 minutes
    Read doc Permalink Copy Prompt
    Last edited by Luigi Gandemer
  1. }
  2. imagewebp($source, $outputPath, 85);
  3. imagedestroy($source);
  4. }
  5. }
    This file ends with no newline character, or with a different newline character than other files in your project. It won't render properly on a terminal, and it's considered a bad practice.
    Time to fix: about 15 minutes
    Read doc Permalink Copy Prompt
    Last edited by Luigi Gandemer
  1. }
  2. $user->setPassword($newHashedPassword);
  3. $this->getEntityManager()->persist($user);
  4. $this->getEntityManager()->flush();
  5. }
  6. }
    This file ends with no newline character, or with a different newline character than other files in your project. It won't render properly on a terminal, and it's considered a bad practice.
    Time to fix: about 15 minutes
    Read doc Permalink Copy Prompt
    Last edited by Luigi Gandemer
  1. public function getName(): string { return $this->name; }
  2. public function getEmail(): string { return $this->email; }
  3. public function getMessage(): string { return $this->message; }
  4. public function getContactId(): int { return $this->contactId; }
  5. }
    This file ends with no newline character, or with a different newline character than other files in your project. It won't render properly on a terminal, and it's considered a bad practice.
    Time to fix: about 15 minutes
    Read doc Permalink Copy Prompt
    Last edited by Luigi Gandemer
  1. {
  2. public function __construct(ManagerRegistry $registry)
  3. {
  4. parent::__construct($registry, Skill::class);
  5. }
  6. }
    This file ends with no newline character, or with a different newline character than other files in your project. It won't render properly on a terminal, and it's considered a bad practice.
    Time to fix: about 15 minutes
    Read doc Permalink Copy Prompt
    Last edited by Luigi Gandemer
  1. access_control:
  2. - { path: ^/api/login, roles: PUBLIC_ACCESS }
  3. - { path: ^/api/portfolio, roles: PUBLIC_ACCESS }
  4. - { path: ^/api/contact, roles: PUBLIC_ACCESS }
  5. - { path: ^/api/docs, roles: PUBLIC_ACCESS }
  6. - { path: ^/api, roles: ROLE_ADMIN }
    This file ends with no newline character, or with a different newline character than other files in your project. It won't render properly on a terminal, and it's considered a bad practice.
    Time to fix: about 15 minutes
    Read doc Permalink Copy Prompt
    Last edited by Luigi Gandemer
  1. $io->success("Admin user '{$username}' created successfully.");
  2. return Command::SUCCESS;
  3. }
  4. }
    This file ends with no newline character, or with a different newline character than other files in your project. It won't render properly on a terminal, and it's considered a bad practice.
    Time to fix: about 15 minutes
    Read doc Permalink Copy Prompt
    Last edited by Luigi Gandemer
in src/Entity/Skill.php, line 50
  1. public function setDescription(string $description): static
  2. {
  3. $this->description = $description;
  4. return $this;
  5. }
  6. }
    This file ends with no newline character, or with a different newline character than other files in your project. It won't render properly on a terminal, and it's considered a bad practice.
    Time to fix: about 15 minutes
    Read doc Permalink Copy Prompt
    Last edited by Luigi Gandemer
  1. {
  2. public function __construct(ManagerRegistry $registry)
  3. {
  4. parent::__construct($registry, Task::class);
  5. }
  6. }
    This file ends with no newline character, or with a different newline character than other files in your project. It won't render properly on a terminal, and it's considered a bad practice.
    Time to fix: about 15 minutes
    Read doc Permalink Copy Prompt
    Last edited by Luigi Gandemer
  1. {
  2. public function __construct(ManagerRegistry $registry)
  3. {
  4. parent::__construct($registry, Degree::class);
  5. }
  6. }
    This file ends with no newline character, or with a different newline character than other files in your project. It won't render properly on a terminal, and it's considered a bad practice.
    Time to fix: about 15 minutes
    Read doc Permalink Copy Prompt
    Last edited by Luigi Gandemer
in src/Entity/Task.php, line 62
  1. public function setExperience(?Experience $experience): static
  2. {
  3. $this->experience = $experience;
  4. return $this;
  5. }
  6. }
    This file ends with no newline character, or with a different newline character than other files in your project. It won't render properly on a terminal, and it's considered a bad practice.
    Time to fix: about 15 minutes
    Read doc Permalink Copy Prompt
    Last edited by Luigi Gandemer
  1. {
  2. public function __construct(ManagerRegistry $registry)
  3. {
  4. parent::__construct($registry, Technology::class);
  5. }
  6. }
    This file ends with no newline character, or with a different newline character than other files in your project. It won't render properly on a terminal, and it's considered a bad practice.
    Time to fix: about 15 minutes
    Read doc Permalink Copy Prompt
    Last edited by Luigi Gandemer
  1. public function setImage(Image $image): static
  2. {
  3. $this->image = $image;
  4. return $this;
  5. }
  6. }
    This file ends with no newline character, or with a different newline character than other files in your project. It won't render properly on a terminal, and it's considered a bad practice.
    Time to fix: about 15 minutes
    Read doc Permalink Copy Prompt
    Last edited by Luigi Gandemer
  1. if ($contact) {
  2. $contact->setStatus('failed');
  3. $this->entityManager->flush();
  4. }
  5. }
  6. }
    This file ends with no newline character, or with a different newline character than other files in your project. It won't render properly on a terminal, and it's considered a bad practice.
    Time to fix: about 15 minutes
    Read doc Permalink Copy Prompt
    Last edited by Luigi Gandemer
  1. )
  2. ));
  3. return $openApi;
  4. }
  5. }
    This file ends with no newline character, or with a different newline character than other files in your project. It won't render properly on a terminal, and it's considered a bad practice.
    Time to fix: about 15 minutes
    Read doc Permalink Copy Prompt
    Last edited by Luigi Gandemer
  1. public function preRemove(Image $image): void
  2. {
  3. $this->imageUploadService->delete($image);
  4. }
  5. }
    This file ends with no newline character, or with a different newline character than other files in your project. It won't render properly on a terminal, and it's considered a bad practice.
    Time to fix: about 15 minutes
    Read doc Permalink Copy Prompt
    Last edited by Luigi Gandemer
  1. self::EDIT => in_array('ROLE_ADMIN', $user->getRoles()),
  2. self::DELETE => in_array('ROLE_ADMIN', $user->getRoles()),
  3. default => false,
  4. };
  5. }
  6. }
    This file ends with no newline character, or with a different newline character than other files in your project. It won't render properly on a terminal, and it's considered a bad practice.
    Time to fix: about 15 minutes
    Read doc Permalink Copy Prompt
    Last edited by Luigi Gandemer
in docker-compose.yml, line 62
  1. PMA_PASSWORD: ${MYSQL_PASSWORD}
  2. depends_on:
  3. - db
  4. volumes:
  5. db_data:
    This file ends with no newline character, or with a different newline character than other files in your project. It won't render properly on a terminal, and it's considered a bad practice.
    Time to fix: about 15 minutes
    Read doc Permalink Copy Prompt
    Last edited by Luigi Gandemer
  1. if ($contact) {
  2. $contact->setStatus('sent');
  3. $this->entityManager->flush();
  4. }
  5. }
  6. }
    This file ends with no newline character, or with a different newline character than other files in your project. It won't render properly on a terminal, and it's considered a bad practice.
    Time to fix: about 15 minutes
    Read doc Permalink Copy Prompt
    Last edited by Luigi Gandemer
  1. {
  2. public function __construct(ManagerRegistry $registry)
  3. {
  4. parent::__construct($registry, Image::class);
  5. }
  6. }
    This file ends with no newline character, or with a different newline character than other files in your project. It won't render properly on a terminal, and it's considered a bad practice.
    Time to fix: about 15 minutes
    Read doc Permalink Copy Prompt
    Last edited by Luigi Gandemer

Your project should not contain PHP files defining multiple classes

More information: https://insight.symfony.com/what-we-analyse/php.file_contains_more_than_one_class

This file contains 2 classes. Keeping only one class per file is a standard in the PHP community, since it promotes interoperability and maintainability.
Time to fix: about 4 hours
Read doc Permalink Copy Prompt
Last edited by Luigi Gandemer