Completed
Push — master ( 06c1ce...67d37c )
by Jeroen
06:20
created

src/Kunstmaan/AdminBundle/Helper/CloneHelper.php (1 issue)

Upgrade to new PHP Analysis Engine

These results are based on our legacy PHP analysis, consider migrating to our new PHP analysis engine instead. Learn more

1
<?php
2
3
namespace Kunstmaan\AdminBundle\Helper;
4
5
use Doctrine\ORM\EntityManager;
6
use Kunstmaan\AdminBundle\Event\DeepCloneAndSaveEvent;
7
use Kunstmaan\AdminBundle\Event\Events;
8
use Symfony\Component\EventDispatcher\EventDispatcherInterface;
9
10
/**
11
 * This helper will help you to clone Entities
12
 */
13
class CloneHelper
14
{
15
    /**
16
     * @var EntityManager
17
     */
18
    private $em;
19
20
    /**
21
     * @var EventDispatcherInterface
22
     */
23
    private $eventDispatcher;
24
25
    /**
26
     * @param EntityManager            $em              The EntityManager
27
     * @param EventDispatcherInterface $eventDispatcher The EventDispatchInterface
28
     */
29
    public function __construct(EntityManager $em, EventDispatcherInterface $eventDispatcher)
30
    {
31
        $this->em = $em;
32
        $this->eventDispatcher = $eventDispatcher;
33
    }
34
35
    /**
36
     * @param mixed $entity
37
     *
38
     * @return mixed
0 ignored issues
show
Consider making the return type a bit more specific; maybe use object.

This check looks for the generic type array as a return type and suggests a more specific type. This type is inferred from the actual code.

Loading history...
39
     */
40
    public function deepCloneAndSave($entity)
41
    {
42
        $clonedEntity = clone $entity;
43
        $this->eventDispatcher->dispatch(Events::DEEP_CLONE_AND_SAVE, new DeepCloneAndSaveEvent($entity, $clonedEntity));
44
45
        $this->em->persist($clonedEntity);
46
        $this->em->flush();
47
48
        $this->eventDispatcher->dispatch(Events::POST_DEEP_CLONE_AND_SAVE, new DeepCloneAndSaveEvent($entity, $clonedEntity));
49
50
        return $clonedEntity;
51
    }
52
}
53