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