Skip to content

Commit 228d122

Browse files
authored
Merge pull request #414 from dotkernel/issue-413
Issue #413: Doctrine: replaced annotations with attributes.
2 parents f7386fa + ef630a4 commit 228d122

File tree

12 files changed

+83
-125
lines changed

12 files changed

+83
-125
lines changed

src/App/src/Common/TimestampAwareTrait.php

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14,16 +14,14 @@ trait TimestampAwareTrait
1414
{
1515
private string $dateFormat = 'Y-m-d H:i:s';
1616

17-
/** @ORM\Column(name="created", type="datetime_immutable") */
17+
#[ORM\Column(name: 'created', type: 'datetime_immutable')]
1818
protected ?DateTimeImmutable $created = null;
1919

20-
/** @ORM\Column(name="updated", type="datetime_immutable", nullable=true) */
20+
#[ORM\Column(name: 'updated', type: 'datetime_immutable', nullable: true)]
2121
protected ?DateTimeImmutable $updated = null;
2222

23-
/**
24-
* @ORM\PrePersist()
25-
* @ORM\PreUpdate()
26-
*/
23+
#[ORM\PrePersist]
24+
#[ORM\PreUpdate]
2725
public function updateTimestamps(): void
2826
{
2927
$this->touch();

src/App/src/Common/UuidAwareTrait.php

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,10 @@
99

1010
trait UuidAwareTrait
1111
{
12-
/**
13-
* @ORM\Id()
14-
* @ORM\Column(name="uuid", type="uuid_binary_ordered_time", unique=true)
15-
* @ORM\GeneratedValue(strategy="CUSTOM")
16-
* @ORM\CustomIdGenerator(class="Ramsey\Uuid\Doctrine\UuidOrderedTimeGenerator")
17-
*/
12+
#[ORM\Id]
13+
#[ORM\Column(name: 'uuid', type: 'uuid_binary_ordered_time', unique: true)]
14+
#[ORM\GeneratedValue(strategy: 'CUSTOM')]
15+
#[ORM\CustomIdGenerator(class: \Ramsey\Uuid\Doctrine\UuidOrderedTimeGenerator::class)]
1816
protected ?UuidInterface $uuid = null;
1917

2018
public function getUuid(): ?UuidInterface

src/Contact/src/ConfigProvider.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
namespace Frontend\Contact;
66

7-
use Doctrine\ORM\Mapping\Driver\AnnotationDriver;
7+
use Doctrine\ORM\Mapping\Driver\AttributeDriver;
88
use Dot\AnnotatedServices\Factory\AnnotatedRepositoryFactory;
99
use Dot\AnnotatedServices\Factory\AnnotatedServiceFactory;
1010
use Frontend\Contact\Controller\ContactController;
@@ -77,7 +77,7 @@ public function getDoctrineConfig(): array
7777
],
7878
],
7979
'ContactEntities' => [
80-
'class' => AnnotationDriver::class,
80+
'class' => AttributeDriver::class,
8181
'cache' => 'array',
8282
'paths' => [__DIR__ . '/Entity'],
8383
],

src/Contact/src/Entity/Message.php

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -6,29 +6,28 @@
66

77
use Doctrine\ORM\Mapping as ORM;
88
use Frontend\App\Common\AbstractEntity;
9+
use Frontend\Contact\Repository\MessageRepository;
910

10-
/**
11-
* @ORM\Entity(repositoryClass="Frontend\Contact\Repository\MessageRepository")
12-
* @ORM\Table(name="contact_message")
13-
* @ORM\HasLifecycleCallbacks
14-
*/
11+
#[ORM\Entity(repositoryClass: MessageRepository::class)]
12+
#[ORM\Table(name: 'contact_message')]
13+
#[ORM\HasLifecycleCallbacks]
1514
class Message extends AbstractEntity
1615
{
1716
public const PLATFORM_WEBSITE = 'website';
1817

19-
/** @ORM\Column(name="email", type="string", length=150) */
18+
#[ORM\Column(name: 'email', type: 'string', length: 150)]
2019
protected string $email = '';
2120

22-
/** @ORM\Column(name="name", type="string", length=150) */
21+
#[ORM\Column(name: 'name', type: 'string', length: 150)]
2322
protected string $name = '';
2423

25-
/** @ORM\Column(name="subject", type="text") */
24+
#[ORM\Column(name: 'subject', type: 'text')]
2625
protected string $subject = '';
2726

28-
/** @ORM\Column(name="message", type="text") */
27+
#[ORM\Column(name: 'message', type: 'text')]
2928
protected string $message = '';
3029

31-
/** @ORM\Column(name="platform", type="text") */
30+
#[ORM\Column(name: 'platform', type: 'text')]
3231
protected string $platform = '';
3332

3433
public function __construct(

src/User/src/ConfigProvider.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
namespace Frontend\User;
66

7-
use Doctrine\ORM\Mapping\Driver\AnnotationDriver;
7+
use Doctrine\ORM\Mapping\Driver\AttributeDriver;
88
use Dot\AnnotatedServices\Factory\AnnotatedRepositoryFactory;
99
use Dot\AnnotatedServices\Factory\AnnotatedServiceFactory;
1010
use Frontend\User\Adapter\AuthenticationAdapter;
@@ -96,7 +96,7 @@ public function getDoctrineConfig(): array
9696
],
9797
],
9898
'UserEntities' => [
99-
'class' => AnnotationDriver::class,
99+
'class' => AttributeDriver::class,
100100
'cache' => 'array',
101101
'paths' => [__DIR__ . '/Entity'],
102102
],

src/User/src/Entity/User.php

Lines changed: 21 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -11,15 +11,14 @@
1111
use Exception;
1212
use Frontend\App\Common\AbstractEntity;
1313
use Frontend\App\Common\UuidOrderedTimeGenerator;
14+
use Frontend\User\Repository\UserRepository;
1415

1516
use function bin2hex;
1617
use function random_bytes;
1718

18-
/**
19-
* @ORM\Entity(repositoryClass="Frontend\User\Repository\UserRepository")
20-
* @ORM\Table(name="user")
21-
* @ORM\HasLifecycleCallbacks()
22-
*/
19+
#[ORM\Entity(repositoryClass: UserRepository::class)]
20+
#[ORM\Table(name: 'user')]
21+
#[ORM\HasLifecycleCallbacks]
2322
class User extends AbstractEntity implements UserInterface
2423
{
2524
public const STATUS_PENDING = 'pending';
@@ -37,41 +36,39 @@ class User extends AbstractEntity implements UserInterface
3736
self::IS_DELETED_NO,
3837
];
3938

40-
/** @ORM\OneToOne(targetEntity="Frontend\User\Entity\UserDetail", cascade={"persist", "remove"}, mappedBy="user") */
39+
#[ORM\OneToOne(mappedBy: 'user', targetEntity: UserDetail::class, cascade: ['persist', 'remove'])]
4140
protected UserDetail $detail;
4241

43-
/** @ORM\OneToOne(targetEntity="Frontend\User\Entity\UserAvatar", cascade={"persist", "remove"}, mappedBy="user") */
42+
#[ORM\OneToOne(mappedBy: 'user', targetEntity: UserAvatar::class, cascade: ['persist', 'remove'])]
4443
protected ?UserAvatar $avatar;
4544

46-
/** @ORM\Column(name="identity", type="string", length=191, nullable=false, unique=true) */
45+
#[ORM\Column(name: 'identity', type: 'string', length: 191, unique: true, nullable: false)]
4746
protected string $identity;
4847

49-
/** @ORM\Column(name="password", type="string", length=191, nullable=false) */
48+
#[ORM\Column(name: 'password', type: 'string', length: 191, nullable: false)]
5049
protected string $password;
5150

52-
/** @ORM\Column(name="status", type="string", length=20, columnDefinition="ENUM('pending', 'active')") */
51+
#[ORM\Column(name: 'status', type: 'string', length: 20, columnDefinition: "ENUM('pending', 'active')")]
5352
protected string $status = self::STATUS_PENDING;
5453

55-
/** @ORM\Column(name="isDeleted", type="boolean") */
54+
#[ORM\Column(name: 'isDeleted', type: 'boolean')]
5655
protected bool $isDeleted = self::IS_DELETED_NO;
5756

58-
/** @ORM\Column(name="hash", type="string", length=64, nullable=false, unique=true) */
57+
#[ORM\Column(name: 'hash', type: 'string', length: 64, unique: true, nullable: false)]
5958
protected string $hash;
6059

61-
/**
62-
* @ORM\ManyToMany(targetEntity="Frontend\User\Entity\UserRole")
63-
* @ORM\JoinTable(
64-
* name="user_roles",
65-
* joinColumns={@ORM\JoinColumn(name="userUuid", referencedColumnName="uuid")},
66-
* inverseJoinColumns={@ORM\JoinColumn(name="roleUuid", referencedColumnName="uuid")}
67-
* )
68-
*/
60+
#[ORM\ManyToMany(targetEntity: UserRole::class)]
61+
#[ORM\JoinTable(name: 'user_roles')]
62+
#[ORM\JoinColumn(name: 'userUuid', referencedColumnName: 'uuid')]
63+
#[ORM\InverseJoinColumn(name: 'roleUuid', referencedColumnName: 'uuid')]
6964
protected Collection $roles;
7065

71-
/**
72-
* @ORM\OneToMany(targetEntity="UserResetPassword",
73-
* cascade={"persist", "remove"}, mappedBy="user", fetch="EXTRA_LAZY")
74-
*/
66+
#[ORM\OneToMany(
67+
mappedBy: 'user',
68+
targetEntity: UserResetPassword::class,
69+
cascade: ['persist', 'remove'],
70+
fetch: 'EXTRA_LAZY'
71+
)]
7572
protected Collection $resetPasswords;
7673

7774
/**

src/User/src/Entity/UserAvatar.php

Lines changed: 8 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -7,31 +7,23 @@
77
use Doctrine\ORM\Mapping as ORM;
88
use Frontend\App\Common\AbstractEntity;
99
use Frontend\User\EventListener\UserAvatarEventListener;
10+
use Frontend\User\Repository\UserAvatarRepository;
1011

11-
/**
12-
* @ORM\Entity(repositoryClass="Frontend\User\Repository\UserAvatarRepository")
13-
* @ORM\Table(name="user_avatar")
14-
* @ORM\HasLifecycleCallbacks()
15-
* @ORM\EntityListeners({UserAvatarEventListener::class})
16-
*/
12+
#[ORM\Entity(repositoryClass: UserAvatarRepository::class)]
13+
#[ORM\Table(name: 'user_avatar')]
14+
#[ORM\HasLifecycleCallbacks]
15+
#[ORM\EntityListeners([UserAvatarEventListener::class])]
1716
class UserAvatar extends AbstractEntity
1817
{
19-
/**
20-
* @ORM\OneToOne(targetEntity="Frontend\User\Entity\User", inversedBy="avatar")
21-
* @ORM\JoinColumn(name="userUuid", referencedColumnName="uuid", nullable=false)
22-
*/
18+
#[ORM\OneToOne(inversedBy: 'avatar', targetEntity: User::class)]
19+
#[ORM\JoinColumn(name: 'userUuid', referencedColumnName: 'uuid', nullable: false)]
2320
protected UserInterface $user;
2421

25-
/** @ORM\Column(name="name", type="string", length=191) */
22+
#[ORM\Column(name: 'name', type: 'string', length: 191)]
2623
protected string $name;
2724

2825
protected string $url;
2926

30-
public function __construct()
31-
{
32-
parent::__construct();
33-
}
34-
3527
public function getUser(): UserInterface
3628
{
3729
return $this->user;

src/User/src/Entity/UserDetail.php

Lines changed: 8 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -6,31 +6,23 @@
66

77
use Doctrine\ORM\Mapping as ORM;
88
use Frontend\App\Common\AbstractEntity;
9+
use Frontend\User\Repository\UserDetailRepository;
910

10-
/**
11-
* @ORM\Entity(repositoryClass="Frontend\User\Repository\UserDetailRepository")
12-
* @ORM\Table(name="user_detail")
13-
* @ORM\HasLifecycleCallbacks()
14-
*/
11+
#[ORM\Entity(repositoryClass: UserDetailRepository::class)]
12+
#[ORM\Table(name: 'user_detail')]
13+
#[ORM\HasLifecycleCallbacks]
1514
class UserDetail extends AbstractEntity
1615
{
17-
/**
18-
* @ORM\OneToOne(targetEntity="Frontend\User\Entity\User", inversedBy="detail")
19-
* @ORM\JoinColumn(name="userUuid", referencedColumnName="uuid", nullable=false)
20-
*/
16+
#[ORM\OneToOne(inversedBy: 'detail', targetEntity: User::class)]
17+
#[ORM\JoinColumn(name: 'userUuid', referencedColumnName: 'uuid', nullable: false)]
2118
protected UserInterface $user;
2219

23-
/** @ORM\Column(name="firstName", type="string", length=191, nullable=true) */
20+
#[ORM\Column(name: 'firstName', type: 'string', length: 191, nullable: true)]
2421
protected string $firstName;
2522

26-
/** @ORM\Column(name="lastName", type="string", length=191, nullable=true) */
23+
#[ORM\Column(name: 'lastName', type: 'string', length: 191, nullable: true)]
2724
protected string $lastName;
2825

29-
public function __construct()
30-
{
31-
parent::__construct();
32-
}
33-
3426
public function getUser(): UserInterface
3527
{
3628
return $this->user;

src/User/src/Entity/UserIdentity.php

Lines changed: 4 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -8,21 +8,12 @@
88

99
class UserIdentity implements UserInterface
1010
{
11-
protected string $identity;
12-
protected array $roles;
13-
protected array $details;
14-
protected string $uuid;
15-
1611
public function __construct(
17-
string $uuid,
18-
string $identity,
19-
array $roles = [],
20-
array $details = []
12+
protected string $uuid,
13+
protected string $identity,
14+
protected array $roles = [],
15+
protected array $details = []
2116
) {
22-
$this->uuid = $uuid;
23-
$this->identity = $identity;
24-
$this->roles = $roles;
25-
$this->details = $details;
2617
}
2718

2819
public function getUuid(): string

src/User/src/Entity/UserRememberMe.php

Lines changed: 8 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -8,26 +8,22 @@
88
use Doctrine\ORM\Mapping as ORM;
99
use Frontend\App\Common\AbstractEntity;
1010

11-
/**
12-
* @ORM\Entity()
13-
* @ORM\Table(name="user_remember_me")
14-
* @ORM\HasLifecycleCallbacks()
15-
*/
11+
#[ORM\Entity]
12+
#[ORM\Table(name: 'user_remember_me')]
13+
#[ORM\HasLifecycleCallbacks]
1614
class UserRememberMe extends AbstractEntity
1715
{
18-
/**
19-
* @ORM\ManyToOne(targetEntity="Frontend\User\Entity\User")
20-
* @ORM\JoinColumn(name="userUuid", referencedColumnName="uuid", nullable=false)
21-
*/
16+
#[ORM\ManyToOne(targetEntity: User::class)]
17+
#[ORM\JoinColumn(name: 'userUuid', referencedColumnName: 'uuid', nullable: false)]
2218
protected User $user;
2319

24-
/** @ORM\Column(name="rememberMeToken", type="string", length=100, nullable=false, unique=true) */
20+
#[ORM\Column(name: 'rememberMeToken', type: 'string', length: 100, unique: true, nullable: false)]
2521
protected string $rememberMeToken = '';
2622

27-
/** @ORM\Column(name="userAgent", type="text") */
23+
#[ORM\Column(name: 'userAgent', type: 'text')]
2824
protected ?string $userAgent = null;
2925

30-
/** @ORM\Column(name="expireDate", type="datetime_immutable") */
26+
#[ORM\Column(name: 'expireDate', type: 'datetime_immutable')]
3127
protected DateTimeImmutable $expireDate;
3228

3329
public function getUser(): User

0 commit comments

Comments
 (0)