GitHub Access Token became invalid

It seems like the GitHub access token used for retrieving details about this repository from GitHub became invalid. This might prevent certain types of inspections from being run (in particular, everything related to pull requests).
Please ask an admin of your repository to re-new the access token on this website.
Completed
Push — master ( d0b5af...77a855 )
by Simon
73:19 queued 58:20
created

src/EventSourcing/EventSourcedRepository.php (1 issue)

Severity

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
namespace SmoothPhp\EventSourcing;
3
4
use SmoothPhp\Contracts\EventBus\EventBus;
5
use SmoothPhp\Contracts\EventSourcing\AggregateRoot as AggregateRootInterface;
6
use SmoothPhp\Contracts\EventStore\EventStore;
7
8
/**
9
 * Class EventSourcedRepository
10
 * @package SmoothPhp\EventSourcing
11
 * @author Simon Bennett <[email protected]>
12
 */
13
abstract class EventSourcedRepository
14
{
15
    /** @var EventStore */
16
    private $eventStore;
17
18
    /** @var EventBus */
19
    private $eventBus;
20
21
22
    /**
23
     * EventSourcedRepository constructor.
24
     * @param EventStore $eventStore
25
     * @param EventBus $eventBus
26
     */
27 6
    public function __construct(EventStore $eventStore, EventBus $eventBus)
28
    {
29 6
        $this->eventStore = $eventStore;
30 6
        $this->eventBus = $eventBus;
31 6
    }
32
33
34
    /**
35
     * @return string
36
     */
37
    abstract protected function getPrefix();
38
39
    /**
40
     * @return string
41
     */
42
    abstract protected function getAggregateType();
43
44
    /**
45
     * @param string $id
46
     * @return AggregateRootInterface
47
     * @throws \SmoothPhp\EventStore\EventStreamNotFound
48
     */
49 3
    public function load($id)
50
    {
51 3
        $domainEvents = $this->eventStore->load($this->getPrefix() . $id);
52 3
        $aggregateClassName = $this->getAggregateType();
53
54 3
        $aggregate = unserialize(sprintf( 'O:%d:"%s":0:{}',strlen($aggregateClassName), $aggregateClassName));
55 3
        $aggregate->initializeState($domainEvents);
56
57 3
        return $aggregate;
58
    }
59
60
    /**
61
     * @param AggregateRootInterface $aggregate
62
     * @return void
63
     */
64 3
    public function save(AggregateRootInterface $aggregate)
65
    {
66 3
        $this->saveAggregate($aggregate,false);
67 3
    }
68
69
    /**
70
     * @param AggregateRootInterface $aggregate
71
     * @return void
72
     */
73
    public function saveWithoutPlayheadCheck(AggregateRootInterface $aggregate)
74
    {
75
        $this->saveAggregate($aggregate,true);
76
    }
77
78
    /**
79
     * @param AggregateRootInterface $aggregate
80
     * @param bool $ignorePlayhead
81
     */
82 3
    private function saveAggregate(AggregateRootInterface $aggregate,bool $ignorePlayhead = false)
83
    {
84 3
        $events = $aggregate->getUncommittedEvents();
85
86 3
        $this->eventStore->append($aggregate->getAggregateRootId(), $events,$ignorePlayhead);
0 ignored issues
show
The call to EventStore::append() has too many arguments starting with $ignorePlayhead.

This check compares calls to functions or methods with their respective definitions. If the call has more arguments than are defined, it raises an issue.

If a function is defined several times with a different number of parameters, the check may pick up the wrong definition and report false positives. One codebase where this has been known to happen is Wordpress.

In this case you can add the @ignore PhpDoc annotation to the duplicate definition and it will be ignored.

Loading history...
87
88 3
        $this->eventBus->publish($events);
89
    }
90
}