Skip to content

Commit 948abee

Browse files
committed
minor #193 Add support for "doctrine/persistence:^2.1" (phansys)
This PR was merged into the 3.x branch. Discussion ---------- |Q |A | |--- |--- | |Branch |3.x| |Bug fix? |no | |New feature? |no | |BC breaks? |no | |Deprecations?|no | |Tests pass? |yes | |Fixed tickets|n/a | |License |MIT | |Doc PR |n/a | Commits ------- 2660f1c Add support for "doctrine/persistence:^2.1"
2 parents c17d101 + 2660f1c commit 948abee

9 files changed

Lines changed: 50 additions & 11 deletions

File tree

DependencyInjection/Compiler/DoctrineOrmMappingsPass.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,8 @@
1111

1212
namespace Hackzilla\Bundle\TicketBundle\DependencyInjection\Compiler;
1313

14-
use Doctrine\Common\Persistence\Mapping\Driver\SymfonyFileLocator;
1514
use Doctrine\ORM\Mapping\Driver\XmlDriver;
15+
use Doctrine\Persistence\Mapping\Driver\SymfonyFileLocator;
1616
use Hackzilla\Bundle\TicketBundle\DependencyInjection\HackzillaTicketExtension;
1717
use Hackzilla\Bundle\TicketBundle\Entity\Ticket;
1818
use Hackzilla\Bundle\TicketBundle\Entity\TicketMessage;

DependencyInjection/HackzillaTicketExtension.php

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,10 @@ public function load(array $configs, ContainerBuilder $container)
5050
}
5151

5252
$this->setTranslationDomain($config, $container);
53+
54+
if (isset($bundles['FOSUserBundle'])) {
55+
$this->createDoctrineCommonBackwardCompatibilityAliases();
56+
}
5357
}
5458

5559
public static function bundleDirectory()
@@ -74,4 +78,19 @@ private function setTranslationDomain(array $config, ContainerBuilder $container
7478
$definition = $container->getDefinition('hackzilla_ticket.ticket_manager');
7579
$definition->addMethodCall('setTranslationDomain', [$translationDomain]);
7680
}
81+
82+
/**
83+
* We MUST remove this method when support for "friendsofsymfony/user-bundle" is dropped
84+
* or adapted to work with "doctrine/common:^3".
85+
*/
86+
private function createDoctrineCommonBackwardCompatibilityAliases(): void
87+
{
88+
if (!interface_exists(\Doctrine\Common\Persistence\ObjectManager::class)) {
89+
class_alias(\Doctrine\Persistence\ObjectManager::class, \Doctrine\Common\Persistence\ObjectManager::class);
90+
}
91+
92+
if (!class_exists(\Doctrine\Common\Persistence\Event\LifecycleEventArgs::class)) {
93+
class_alias(\Doctrine\Persistence\Event\LifecycleEventArgs::class, \Doctrine\Common\Persistence\Event\LifecycleEventArgs::class);
94+
}
95+
}
7796
}

Manager/TicketManager.php

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,8 @@
1111

1212
namespace Hackzilla\Bundle\TicketBundle\Manager;
1313

14-
use Doctrine\Common\Persistence\ObjectManager;
14+
use Doctrine\Common\Persistence\ObjectManager as LegacyObjectManager;
15+
use Doctrine\Persistence\ObjectManager;
1516
use Hackzilla\Bundle\TicketBundle\Entity\TicketMessage;
1617
use Hackzilla\Bundle\TicketBundle\Model\TicketInterface;
1718
use Hackzilla\Bundle\TicketBundle\Model\TicketMessageInterface;
@@ -54,10 +55,21 @@ public function __construct($ticketClass, $ticketMessageClass)
5455
$this->ticketMessageClass = $ticketMessageClass;
5556
}
5657

58+
public function setObjectManager(ObjectManager $objectManager): void
59+
{
60+
$this->objectManager = $objectManager;
61+
$this->ticketRepository = $objectManager->getRepository($this->ticketClass);
62+
$this->messageRepository = $objectManager->getRepository($this->ticketMessageClass);
63+
}
64+
5765
/**
66+
* NEXT_MAJOR: Remove this method.
67+
*
68+
* @deprecated since hackzilla/ticket-bundle 3.x, use `setObjectManager()` instead.
69+
*
5870
* @return $this
5971
*/
60-
public function setEntityManager(ObjectManager $om)
72+
public function setEntityManager(LegacyObjectManager $om)
6173
{
6274
$this->objectManager = $om;
6375
$this->ticketRepository = $om->getRepository($this->ticketClass);

Manager/TicketManagerInterface.php

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,18 +11,23 @@
1111

1212
namespace Hackzilla\Bundle\TicketBundle\Manager;
1313

14-
use Doctrine\Common\Persistence\ObjectManager;
14+
use Doctrine\Common\Persistence\ObjectManager as LegacyObjectManager;
1515
use Doctrine\ORM\QueryBuilder;
16+
use Doctrine\Persistence\ObjectManager;
1617
use Hackzilla\Bundle\TicketBundle\Model\TicketInterface;
1718
use Hackzilla\Bundle\TicketBundle\Model\TicketMessageInterface;
1819
use Symfony\Component\Translation\TranslatorInterface;
1920

2021
/**
2122
* @method QueryBuilder getTicketListQuery(UserManagerInterface $userManager, $ticketStatus, $ticketPriority = null)
23+
* @method void setObjectManager(ObjectManager $objectManager)
2224
*/
2325
interface TicketManagerInterface
2426
{
25-
public function setEntityManager(ObjectManager $om);
27+
/**
28+
* @deprecated since hackzilla/ticket-bundle 3.x, use `setObjectManager()` instead.
29+
*/
30+
public function setEntityManager(LegacyObjectManager $om);
2631

2732
public function setTranslator(TranslatorInterface $translator);
2833

Manager/UserManager.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111

1212
namespace Hackzilla\Bundle\TicketBundle\Manager;
1313

14-
use Doctrine\Common\Persistence\ObjectRepository;
14+
use Doctrine\Persistence\ObjectRepository;
1515
use Hackzilla\Bundle\TicketBundle\Model\TicketInterface;
1616
use Hackzilla\Bundle\TicketBundle\Model\UserInterface;
1717
use Hackzilla\Bundle\TicketBundle\TicketRole;

Resources/config/services.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ services:
2626
- '%hackzilla_ticket.model.ticket.class%'
2727
- '%hackzilla_ticket.model.message.class%'
2828
calls:
29-
- [ setEntityManager, ['@doctrine.orm.entity_manager'] ]
29+
- [ setObjectManager, ['@doctrine.orm.entity_manager'] ]
3030
- [ setTranslator, ['@translator'] ]
3131
public: true
3232

Tests/Manager/TicketManagerTest.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,9 @@
1111

1212
namespace Hackzilla\Bundle\TicketBundle\Tests\User;
1313

14-
use Doctrine\Common\Persistence\ObjectManager;
1514
use Doctrine\ORM\EntityRepository;
1615
use Doctrine\ORM\QueryBuilder;
16+
use Doctrine\Persistence\ObjectManager;
1717
use Hackzilla\Bundle\TicketBundle\Manager\TicketManager;
1818
use Hackzilla\Bundle\TicketBundle\Manager\UserManagerInterface;
1919
use Hackzilla\Bundle\TicketBundle\Model\TicketMessageInterface;
@@ -65,7 +65,7 @@ public function testGetTicketListQuery()
6565
->willReturn($entityRepository);
6666

6767
$ticketManager = new TicketManager($ticketClass, $ticketMessageClass);
68-
$ticketManager->setEntityManager($om);
68+
$ticketManager->setObjectManager($om);
6969

7070
$this->assertInstanceOf(QueryBuilder::class, $ticketManager->getTicketListQuery($this->userManager, TicketMessageInterface::STATUS_OPEN));
7171
}
@@ -100,7 +100,7 @@ public function testGetTicketList()
100100
->willReturn($entityRepository);
101101

102102
$ticketManager = new TicketManager($ticketClass, $ticketMessageClass);
103-
$ticketManager->setEntityManager($om);
103+
$ticketManager->setObjectManager($om);
104104

105105
$this->assertInstanceOf(QueryBuilder::class, $ticketManager->getTicketList($this->userManager, TicketMessageInterface::STATUS_OPEN));
106106
}

composer.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
"doctrine/collections": "^1.6",
3030
"doctrine/doctrine-bundle": "^2.0",
3131
"doctrine/orm": "^2.4.8",
32-
"doctrine/persistence": "^1.3",
32+
"doctrine/persistence": "^1.3 || ^2.1",
3333
"knplabs/knp-paginator-bundle": "^4.0 || ^5.0",
3434
"symfony/config": "^4.4",
3535
"symfony/console": "^4.4",

phpstan.neon.dist

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,3 +7,6 @@ parameters:
77
- Tests/
88
ignoreErrors:
99
- '#.* (class|type) Vich\\UploaderBundle\\.*#'
10+
- '#^Class Doctrine\\Common\\Persistence\\ObjectManager not found\.$#'
11+
- '#^Class Doctrine\\Common\\Persistence\\Event\\LifecycleEventArgs not found\.$#'
12+
- '#^Parameter \$om of method Hackzilla\\Bundle\\TicketBundle\\Manager\\TicketManager(Interface)?::setEntityManager\(\) has invalid typehint type Doctrine\\Common\\Persistence\\ObjectManager\.$#'

0 commit comments

Comments
 (0)