Skip to content

Commit cbc8fb1

Browse files
authored
Merge pull request #20 from toooni/feature/orm3.0
Use doctrine/orm:^3.0
2 parents 203b2bd + 3b82ea1 commit cbc8fb1

9 files changed

+365
-145
lines changed

.github/workflows/symfony.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ jobs:
1212
runs-on: ubuntu-latest
1313
strategy:
1414
matrix:
15-
php-version: [8.0]
15+
php-version: [8.2]
1616
deps: ["low","default"]
1717
env:
1818
XDEBUG_MODE: coverage

EventListener/LifecycleEventsListener.php

Lines changed: 35 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,9 @@
22

33
namespace W3C\LifecycleEventsBundle\EventListener;
44

5-
use Doctrine\Common\Util\ClassUtils;
6-
use Doctrine\ORM\Event\LifecycleEventArgs;
5+
use Doctrine\ORM\Mapping\AssociationMapping;
6+
use Doctrine\Persistence\Event\LifecycleEventArgs;
7+
use Doctrine\ORM\Event\PostPersistEventArgs;
78
use Doctrine\ORM\Event\PreUpdateEventArgs;
89
use Doctrine\ORM\Mapping\MappingException;
910
use Doctrine\ORM\PersistentCollection;
@@ -41,22 +42,24 @@ public function __construct(LifecycleEventsDispatcher $dispatcher, AttributeGett
4142
/**
4243
* Called upon receiving postPersist events
4344
*
44-
* @param LifecycleEventArgs $args event to feed the dispatcher with
45+
* @param PostPersistEventArgs $args event to feed the dispatcher with
4546
*
4647
* @throws MappingException
4748
* @throws ReflectionException
4849
*/
49-
public function postPersist(LifecycleEventArgs $args): void
50+
public function postPersist(PostPersistEventArgs $args): void
5051
{
5152
$entity = $args->getObject();
52-
$class = ClassUtils::getRealClass(get_class($entity));
53+
54+
$classMetadata = $args->getObjectManager()->getClassMetadata($entity::class);
55+
$class = $classMetadata->getName();
56+
5357
/** @var Create $attribute */
5458
$attribute = $this->attributeGetter->getAttribute($class, Create::class);
5559
if ($attribute) {
5660
$this->dispatcher->addCreation($attribute, $args);
5761
}
5862

59-
$classMetadata = $args->getObjectManager()->getClassMetadata($class);
6063
foreach ($classMetadata->getAssociationMappings() as $property => $associationMapping) {
6164
if (!$classMetadata->isAssociationInverseSide($property)) {
6265
if ($classMetadata->isSingleValuedAssociation($property)) {
@@ -98,15 +101,15 @@ public function preSoftDelete(LifecycleEventArgs $args): void
98101
public function preRemove(LifecycleEventArgs $args): void
99102
{
100103
$entity = $args->getObject();
101-
$class = ClassUtils::getRealClass(get_class($entity));
104+
$classMetadata = $args->getObjectManager()->getClassMetadata($entity::class);
105+
$class = $classMetadata->getName();
102106

103107
/** @var Delete $attribute */
104108
$attribute = $this->attributeGetter->getAttribute($class, Delete::class);
105109
if ($attribute) {
106110
$this->dispatcher->addDeletion($attribute, $args);
107111
}
108112

109-
$classMetadata = $args->getObjectManager()->getClassMetadata($class);
110113
foreach ($classMetadata->getAssociationMappings() as $property => $associationMapping) {
111114
if (!$classMetadata->isAssociationInverseSide($property)) {
112115
if ($classMetadata->isSingleValuedAssociation($property)) {
@@ -135,7 +138,8 @@ public function preRemove(LifecycleEventArgs $args): void
135138
public function preUpdate(PreUpdateEventArgs $args): void
136139
{
137140
$entity = $args->getObject();
138-
$class = ClassUtils::getRealClass(get_class($entity));
141+
$classMetadata = $args->getObjectManager()->getClassMetadata($entity::class);
142+
$class = $classMetadata->getName();
139143

140144
/** @var Update $attribute */
141145
$attribute = $this->attributeGetter->getAttribute($class, Update::class);
@@ -168,8 +172,8 @@ public function preUpdate(PreUpdateEventArgs $args): void
168172
*/
169173
private function buildCollectionChanges(PreUpdateEventArgs $args, object $entity): array
170174
{
171-
$realClass = ClassUtils::getRealClass(get_class($entity));
172-
$classMetadata = $args->getObjectManager()->getClassMetadata($realClass);
175+
$classMetadata = $args->getObjectManager()->getClassMetadata($entity::class);
176+
$realClass = $classMetadata->getName();
173177
$collectionsChanges = [];
174178

175179
/** @var PersistentCollection $u */
@@ -211,8 +215,9 @@ private function buildCollectionChanges(PreUpdateEventArgs $args, object $entity
211215
*/
212216
private function buildChangeSet(PreUpdateEventArgs $args, $entity): array
213217
{
214-
$realClass = ClassUtils::getRealClass(get_class($entity));
215-
$classMetadata = $args->getObjectManager()->getClassMetadata($realClass);
218+
$classMetadata = $args->getObjectManager()->getClassMetadata($entity::class);
219+
$realClass = $classMetadata->getName();
220+
216221
$changes = [];
217222
foreach (array_keys($args->getEntityChangeSet()) as $property) {
218223
$ignoreAnnotation = $this->attributeGetter->getPropertyAttribute(
@@ -290,19 +295,22 @@ private function propertyUpdateInverse(
290295
$mapping = $classMetadata->getAssociationMapping($property);
291296

292297
if (isset($change['new']) && $change['new']) {
293-
$newInverseMetadata = $em->getClassMetadata(ClassUtils::getRealClass(get_class($change['new'])));
298+
$newInverseMetadata = $em->getClassMetadata($change['new']::class);
294299
} else {
295300
$newInverseMetadata = $em->getClassMetadata($mapping['targetEntity']);
296301
}
297302

298303
if (isset($change['old']) && $change['old']) {
299-
$oldInverseMetadata = $em->getClassMetadata(ClassUtils::getRealClass(get_class($change['old'])));
304+
$oldInverseMetadata = $em->getClassMetadata($change['old']::class);
300305
} else {
301306
$oldInverseMetadata = $em->getClassMetadata($mapping['targetEntity']);
302307
}
303308

304309
// Inverse side should always be similar for old and new entities, but in case that's not the case (because of
305310
// some weird inheritance, we consider old and new metadata
311+
if (!isset($mapping['inversedBy'])) {
312+
return;
313+
}
306314

307315
// Old Inverse side is also single-valued (one-to-one)
308316
if ($oldInverseMetadata->isSingleValuedAssociation($mapping['inversedBy'])) {
@@ -333,14 +341,14 @@ private function updateOldInverse(
333341
?object $oldEntity,
334342
object $owningEntity,
335343
LifecycleEventArgs $args,
336-
array $mapping
344+
AssociationMapping $mapping
337345
): void {
338346
$inverseField = $mapping['inversedBy'] ?? null;
339347
if ($inverseField && $oldEntity) {
340348
$em = $args->getObjectManager();
341349

342-
$oldClass = ClassUtils::getRealClass(get_class($oldEntity));
343-
$inverseMetadata = $em->getClassMetadata($oldClass);
350+
$inverseMetadata = $em->getClassMetadata($oldEntity::class);
351+
$oldClass = $inverseMetadata->getName();
344352

345353
/** @var Update $targetAnnotation */
346354
$targetAnnotation = $this->attributeGetter->getAttribute($oldClass, Update::class);
@@ -389,14 +397,14 @@ private function updateNewInverse(
389397
?object $newEntity,
390398
object $owningEntity,
391399
LifecycleEventArgs $args,
392-
array $mapping
400+
AssociationMapping $mapping,
393401
): void {
394402
$inverseField = $mapping['inversedBy'] ?? null;
395403
if ($inverseField && $newEntity) {
396404
$em = $args->getObjectManager();
397405

398-
$newClass = ClassUtils::getRealClass(get_class($newEntity));
399-
$inverseMetadata = $em->getClassMetadata($newClass);
406+
$inverseMetadata = $em->getClassMetadata($newEntity::class);
407+
$newClass = $inverseMetadata->getName();
400408

401409
/** @var Update $targetAnnotation */
402410
$targetAnnotation = $this->attributeGetter->getAttribute($newClass, Update::class);
@@ -446,14 +454,14 @@ private function updateDeletedInverse(
446454
?object $deletedEntity,
447455
object $owningEntity,
448456
LifecycleEventArgs $args,
449-
array $mapping
457+
AssociationMapping $mapping
450458
): void {
451459
$inverseField = $mapping['inversedBy'] ?? null;
452460
if ($inverseField && $deletedEntity) {
453461
$em = $args->getObjectManager();
454462

455-
$deletedClass = ClassUtils::getRealClass(get_class($deletedEntity));
456-
$inverseMetadata = $em->getClassMetadata($deletedClass);
463+
$inverseMetadata = $em->getClassMetadata($deletedEntity::class);
464+
$deletedClass = $inverseMetadata->getName();
457465

458466
/** @var Update $targetAnnotation */
459467
$targetAnnotation = $this->attributeGetter->getAttribute($deletedClass, Update::class);
@@ -503,14 +511,14 @@ private function updateInsertedInverse(
503511
?object $insertedEntity,
504512
object $owningEntity,
505513
LifecycleEventArgs $args,
506-
array $mapping
514+
AssociationMapping $mapping,
507515
): void {
508516
$inverseField = $mapping['inversedBy'] ?? null;
509517
if ($inverseField && $insertedEntity) {
510518
$em = $args->getObjectManager();
511519

512-
$deletedClass = ClassUtils::getRealClass(get_class($insertedEntity));
513-
$inverseMetadata = $em->getClassMetadata($deletedClass);
520+
$inverseMetadata = $em->getClassMetadata($insertedEntity::class);
521+
$deletedClass = $inverseMetadata->getName();
514522

515523
/** @var Update $targetAnnotation */
516524
$targetAnnotation = $this->attributeGetter->getAttribute($deletedClass, Update::class);

EventListener/LifecyclePropertyEventsListener.php

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -52,8 +52,7 @@ public function preUpdate(PreUpdateEventArgs $args): void
5252
private function addPropertyChanges(PreUpdateEventArgs $args): void
5353
{
5454
$entity = $args->getObject();
55-
$realClass = ClassUtils::getRealClass(get_class($entity));
56-
$classMetadata = $args->getObjectManager()->getClassMetadata($realClass);
55+
$classMetadata = $args->getObjectManager()->getClassMetadata($entity::class);
5756

5857
foreach ($args->getEntityChangeSet() as $property => $change) {
5958
/** @var Change $attribute */
@@ -79,8 +78,7 @@ private function addPropertyChanges(PreUpdateEventArgs $args): void
7978
private function addCollectionChanges(PreUpdateEventArgs $args): void
8079
{
8180
$entity = $args->getObject();
82-
$realClass = ClassUtils::getRealClass(get_class($entity));
83-
$classMetadata = $args->getObjectManager()->getClassMetadata($realClass);
81+
$classMetadata = $args->getObjectManager()->getClassMetadata($entity::class);
8482

8583
/** @var PersistentCollection $update */
8684
foreach ($args->getObjectManager()->getUnitOfWork()->getScheduledCollectionUpdates() as $update) {

Services/LifecycleEventsDispatcher.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -225,7 +225,7 @@ public function getDeletions(): array
225225

226226
public function addDeletion(Delete $attribute, LifecycleEventArgs $args): void
227227
{
228-
$classMetadata = $args->getObjectManager()->getClassMetadata(ClassUtils::getRealClass(get_class($args->getObject())));
228+
$classMetadata = $args->getObjectManager()->getClassMetadata($args->getObject()::class);
229229
$this->deletions[] = [
230230
$attribute,
231231
$args,

0 commit comments

Comments
 (0)