Skip to content

Commit

Permalink
refactor: update and fix some issues for symfony 7
Browse files Browse the repository at this point in the history
  • Loading branch information
AntoineGonzalez committed Apr 30, 2024
1 parent 8c785cb commit 1acc618
Show file tree
Hide file tree
Showing 65 changed files with 601 additions and 643 deletions.
3 changes: 2 additions & 1 deletion composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,8 @@
},
"config": {
"allow-plugins": {
"symfony/*": true
"symfony/*": true,
"php-http/discovery": true
},
"optimize-autoloader": true,
"preferred-install": {
Expand Down
806 changes: 409 additions & 397 deletions composer.lock

Large diffs are not rendered by default.

3 changes: 3 additions & 0 deletions config/services.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -14,3 +14,6 @@ services:
resource: '../src/Application/'
exclude:
- '../src/Application/DomainEventsHandler/'

Infrastructure\Doctrine\DataFixtures\:
resource: '../src/Infrastructure/Doctrine/DataFixtures/**.php'
2 changes: 1 addition & 1 deletion config/services/doctrine_event_listeners.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -8,4 +8,4 @@ services:
Infrastructure\Doctrine\EventListener\HashUserPasswordListener:
tags:
- { name: doctrine.event_listener, event: prePersist }
- { name: doctrine.event_listener, event: preUpdate }
- { name: doctrine.event_listener, event: preUpdate }
1 change: 1 addition & 0 deletions config/services/domain_events.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
services:
_defaults:
autowire: true
autoconfigure: true
public: false

Domain\EventsRegisterer: ~
Expand Down
2 changes: 1 addition & 1 deletion config/services/use_cases.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -8,4 +8,4 @@ services:
Domain\UseCase\:
resource: '%kernel.project_dir%/src/Domain/UseCase/**/Handler.php'
tags:
- { name: messenger.message_handler, bus: command.bus }
- { name: messenger.message_handler, bus: command.bus }
4 changes: 2 additions & 2 deletions src/Application/Controller/AuthenticationController.php
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,8 @@
final class AuthenticationController extends AbstractController
{
public function __construct(
private UsersCollection $usersCollection,
private CommandBus $commandBus
private readonly UsersCollection $usersCollection,
private readonly CommandBus $commandBus
) {
}

Expand Down
7 changes: 3 additions & 4 deletions src/Application/Controller/DinosaursController.php
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@
use Application\MessageBus\CommandBus;
use Application\MessageBus\EventBus;
use Application\MessageBus\QueryBus;
use Domain\Event\DinosaurIsBorn;
use Domain\Exception\DinosaurNotFoundException;
use Domain\Query\GetSingleDinosaur;
use Domain\Query\GetAllDinosaurs;
Expand All @@ -23,9 +22,9 @@
final class DinosaursController extends AbstractController
{
public function __construct(
private CommandBus $commandBus,
private QueryBus $queryBus,
private EventBus $eventBus
private readonly CommandBus $commandBus,
private readonly QueryBus $queryBus,
private readonly EventBus $eventBus
) {
}

Expand Down
4 changes: 2 additions & 2 deletions src/Application/Controller/SpeciesController.php
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,8 @@
final class SpeciesController extends AbstractController
{
public function __construct(
private CommandBus $commandBus,
private QueryBus $queryBus
private readonly CommandBus $commandBus,
private readonly QueryBus $queryBus
) {
}

Expand Down
21 changes: 6 additions & 15 deletions src/Application/DomainEventsHandler/LogWhenDinosaurDied.php
Original file line number Diff line number Diff line change
Expand Up @@ -5,31 +5,22 @@
namespace Application\DomainEventsHandler;

use Domain\Event\DinosaurDied;
use Domain\Event\EventInterface;
use Psr\Log\LoggerInterface;
use Symfony\Component\Messenger\Handler\MessageSubscriberInterface;
use Symfony\Component\Messenger\Attribute\AsMessageHandler;

class LogWhenDinosaurDied implements MessageSubscriberInterface
#[AsMessageHandler]
final class LogWhenDinosaurDied
{
public function __construct(
private LoggerInterface $logger
private readonly LoggerInterface $logger,
) {
}

public function __invoke(EventInterface $event): void
public function __invoke(DinosaurDied $event): void
{
if (!$event instanceof DinosaurDied) {
return;
}

$this->logger->info(sprintf(
'Dinosaur %s died',
$event->getDinosaurName()
$event->dinosaurName
));
}

public static function getHandledMessages(): iterable
{
yield DinosaurDied::class;
}
}
23 changes: 6 additions & 17 deletions src/Application/DomainEventsHandler/LogWhenDinosaurIsBorn.php
Original file line number Diff line number Diff line change
Expand Up @@ -6,38 +6,27 @@

use Domain\Collection\DinosaursCollection;
use Domain\Event\DinosaurIsBorn;
use Domain\Event\EventInterface;
use Domain\Exception\DinosaurNotFoundException;
use Domain\Model\Dinosaur;
use Psr\Log\LoggerInterface;
use Symfony\Component\Messenger\Handler\MessageSubscriberInterface;
use Symfony\Component\Messenger\Attribute\AsMessageHandler;

class LogWhenDinosaurIsBorn implements MessageSubscriberInterface
#[AsMessageHandler]
final class LogWhenDinosaurIsBorn
{
public function __construct(
private DinosaursCollection $dinosaursCollection,
private LoggerInterface $logger
private readonly DinosaursCollection $dinosaursCollection,
private readonly LoggerInterface $logger
) {
}

public function __invoke(EventInterface $event): void
public function __invoke(DinosaurIsBorn $event): void
{
$dinosaurId = $event->getAggregateRootId();

$dinosaur = $this->dinosaursCollection->find($dinosaurId);

if (!$dinosaur instanceof Dinosaur) {
throw new DinosaurNotFoundException($dinosaurId);
}

$this->logger->info(sprintf(
'Dinosaur %s was born',
$dinosaur->getName()
));
}

public static function getHandledMessages(): iterable
{
yield DinosaurIsBorn::class;
}
}
8 changes: 4 additions & 4 deletions src/Application/Form/DataTransformer/SpeciesReadToModel.php
Original file line number Diff line number Diff line change
Expand Up @@ -10,14 +10,14 @@
use Domain\ReadModel\Species;
use Symfony\Component\Form\DataTransformerInterface;

class SpeciesReadToModel implements DataTransformerInterface
final class SpeciesReadToModel implements DataTransformerInterface
{
public function __construct(
private SpeciesCollection $speciesCollection
private readonly SpeciesCollection $speciesCollection
) {
}

public function transform(mixed $value)
public function transform(mixed $value): mixed
{
if (!$value instanceof Species) {
return $value;
Expand All @@ -34,7 +34,7 @@ public function transform(mixed $value)
return $species;
}

public function reverseTransform(mixed $value)
public function reverseTransform(mixed $value): mixed
{
if (!$value instanceof ModelSpecies) {
return $value;
Expand Down
2 changes: 1 addition & 1 deletion src/Application/Form/Type/DinosaurType.php
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
final class DinosaurType extends AbstractType
{
public function __construct(
private SpeciesReadToModel $speciesReadToModel
private readonly SpeciesReadToModel $speciesReadToModel
) {
}

Expand Down
2 changes: 1 addition & 1 deletion src/Application/Form/Type/UserType.php
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
use Symfony\Component\Form\Extension\Core\Type\SubmitType;
use Symfony\Component\Form\FormBuilderInterface;

class UserType extends AbstractType
final class UserType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options): void
{
Expand Down
2 changes: 1 addition & 1 deletion src/Application/MessageBus/QueryBus.php
Original file line number Diff line number Diff line change
Expand Up @@ -7,4 +7,4 @@
interface QueryBus
{
public function dispatch(object $input): mixed;
}
}
8 changes: 5 additions & 3 deletions src/Application/Security/User.php
Original file line number Diff line number Diff line change
Expand Up @@ -11,16 +11,18 @@
final class User implements UserInterface, PasswordAuthenticatedUserInterface
{
public function __construct(
private ModelUser $user
private readonly ModelUser $user
) {
}

public function getRoles(): array
{
return ['ROLE_USER'];
return $this->user->getRoles();
}

public function eraseCredentials() { }
public function eraseCredentials(): void
{
}

public function getUserIdentifier(): string
{
Expand Down
18 changes: 6 additions & 12 deletions src/Application/Security/UserProvider.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,21 +4,16 @@

namespace Application\Security;

use Domain;
use Domain\Collection\UsersCollection;
use Symfony\Component\Security\Core\Exception\UserNotFoundException;
use Symfony\Component\Security\Core\User\UserInterface;
use Symfony\Component\Security\Core\User\UserProviderInterface;

final class UserProvider implements UserProviderInterface
{
/**
* @var Domain\Repository\Users
*/
private $users;

public function __construct(Domain\Collection\UsersCollection $users)
{
$this->users = $users;
public function __construct(
private readonly UsersCollection $users
) {
}

public function loadUserByIdentifier(string $identifier): UserInterface
Expand All @@ -32,16 +27,15 @@ public function loadUserByIdentifier(string $identifier): UserInterface
return new User($user);
}

public function refreshUser(UserInterface $user)
public function refreshUser(UserInterface $user): UserInterface
{
return $this->loadUserByIdentifier(
$user->getUserIdentifier()
);
}

public function supportsClass($class)
public function supportsClass($class): bool
{
return User::class === $class;
}
}

2 changes: 1 addition & 1 deletion src/Domain/Collection/UsersCollection.php
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@

interface UsersCollection
{
public function findByEmail(string $email): ?User;
public function findOneByEmail(string $email): ?User;

public function add(User $user): void;
}
20 changes: 6 additions & 14 deletions src/Domain/Event/DinosaurDied.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,24 +4,16 @@

namespace Domain\Event;

use Domain\Model\Dinosaur;

final class DinosaurDied implements EventInterface
final readonly class DinosaurDied implements EventInterface
{
private string $dinosaurName;

public function __construct(private Dinosaur $dinosaur)
{
$this->dinosaurName = $dinosaur->getName();
public function __construct(
public int $dinosaurId,
public string $dinosaurName,
) {
}

public function getAggregateRootId(): string
{
return (string) $this->dinosaur->getId();
}

public function getDinosaurName(): string
{
return $this->dinosaurName;
return (string) $this->dinosaurId;
}
}
10 changes: 4 additions & 6 deletions src/Domain/Event/DinosaurIsBorn.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,17 +4,15 @@

namespace Domain\Event;

use Domain\Model\Dinosaur;

class DinosaurIsBorn implements EventInterface
final readonly class DinosaurIsBorn implements EventInterface
{
public function __construct(
private Dinosaur $dinosaur
public int $dinosaurId,
) {
}

public function getAggregateRootId(): string
{
return (string) $this->dinosaur->getId();
return (string) $this->dinosaurId;
}
}
}
2 changes: 1 addition & 1 deletion src/Domain/EventsRegisterer.php
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

use Domain\Event\EventInterface;

class EventsRegisterer
final class EventsRegisterer
{
/** @var array<EventInterface> */
private array $events = [];
Expand Down
7 changes: 4 additions & 3 deletions src/Domain/Exception/DinosaurAlreadyExistsException.php
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,11 @@

use DomainException;

class DinosaurAlreadyExistsException extends DomainException
final class DinosaurAlreadyExistsException extends DomainException
{
public function __construct(string $name)
{
public function __construct(
private readonly string $name
) {
parent::__construct(sprintf('Dinosaur "%s" already exists', $name));
}
}
2 changes: 1 addition & 1 deletion src/Domain/Exception/DinosaurNotFoundException.php
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

use DomainException;

class DinosaurNotFoundException extends DomainException
final class DinosaurNotFoundException extends DomainException
{
public function __construct(
public readonly string $id
Expand Down
7 changes: 4 additions & 3 deletions src/Domain/Exception/SpeciesAlreadyExistsException.php
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,11 @@

use DomainException;

class SpeciesAlreadyExistsException extends DomainException
final class SpeciesAlreadyExistsException extends DomainException
{
public function __construct(string $name)
{
public function __construct(
private readonly string $name
) {
parent::__construct(sprintf('Species "%s" already exists', $name));
}
}
Loading

0 comments on commit 1acc618

Please sign in to comment.