1+ <?php
2+ /*
3+ * This file is part of the prooph/event-store.
4+ * (c) Alexander Miertsch <contact@prooph.de>
5+ *
6+ * For the full copyright and license information, please view the LICENSE
7+ * file that was distributed with this source code.
8+ *
9+ * Date: 17.04.14 - 20:56
10+ */
11+
12+ namespace Prooph \EventStore \Adapter \Builder ;
13+
14+ use Prooph \EventStore \EventSourcing \AggregateChangedEvent ;
15+ use Rhumsaa \Uuid \Uuid ;
16+ use ValueObjects \DateTime \DateTime ;
17+
18+ /**
19+ * Class EventBuilder
20+ *
21+ * @package Prooph\EventStore\Adapter\Builder
22+ * @author Alexander Miertsch <contact@prooph.de>
23+ */
24+ class EventBuilder
25+ {
26+ /**
27+ * @param string $eventFQCN
28+ * @param Uuid $uuid
29+ * @param mixed $aggregateId
30+ * @param DateTime $occurredOn
31+ * @param int $version
32+ * @param array $payload
33+ * @return AggregateChangedEvent
34+ */
35+ public static function reconstructEvent ($ eventFQCN , Uuid $ uuid , $ aggregateId , DateTime $ occurredOn , $ version , array $ payload )
36+ {
37+ $ eventRef = new \ReflectionClass ($ eventFQCN );
38+
39+ $ event = $ eventRef ->newInstanceWithoutConstructor ();
40+
41+ $ uuidProp = $ eventRef ->getProperty ('uuid ' );
42+
43+ $ uuidProp ->setAccessible (true );
44+
45+ $ uuidProp ->setValue ($ event , $ uuid );
46+
47+ $ aggregateIdProp = $ eventRef ->getProperty ('aggregateId ' );
48+
49+ $ aggregateIdProp ->setAccessible (true );
50+
51+ $ aggregateIdProp ->setValue ($ event , $ aggregateId );
52+
53+ $ occurredOnProp = $ eventRef ->getProperty ('occurredOn ' );
54+
55+ $ occurredOnProp ->setAccessible (true );
56+
57+ $ occurredOnProp ->setValue ($ event , $ occurredOn );
58+
59+ $ versionProp = $ eventRef ->getProperty ('version ' );
60+
61+ $ versionProp ->setAccessible (true );
62+
63+ $ versionProp ->setValue ($ event , $ version );
64+
65+ $ payloadProp = $ eventRef ->getProperty ('payload ' );
66+
67+ $ payloadProp ->setAccessible (true );
68+
69+ $ payloadProp ->setValue ($ event , $ payload );
70+
71+ return $ event ;
72+ }
73+ }
74+
0 commit comments