-
Notifications
You must be signed in to change notification settings - Fork 0
/
UserApp.php
55 lines (49 loc) · 1.66 KB
/
UserApp.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
<?php
namespace Samples\UserService;
use Micronative\EventSchema\Validator;
use Micronative\MockBroker\Broker;
use Micronative\MockBroker\Publisher as MockPublisher;
use Samples\UserService\Messaging\Publisher;
use Samples\UserService\Entities\User;
use Samples\UserService\Events\UserEventSubscriber;
use Samples\UserService\Repositories\UserRepository;
use Symfony\Component\EventDispatcher\EventDispatcher;
class UserApp
{
private UserRepository $userRepository;
/**
* UserApp constructor.
* @param \Micronative\MockBroker\Broker|null $broker
* @throws \Micronative\EventSchema\Exceptions\ConfigException
* @throws \Micronative\EventSchema\Exceptions\JsonException
*/
public function __construct(Broker $broker = null)
{
$eventSubscriber = new UserEventSubscriber(
new Publisher(
new MockPublisher($broker),
new Validator(dirname(__FILE__), ["/assets/configs/out_events.yml"]))
);
$eventDispatcher = new EventDispatcher();
$eventDispatcher->addSubscriber($eventSubscriber);
$this->userRepository = new UserRepository($eventDispatcher);
}
/**
* @param string $name
* @param string|null $email
* @throws \Exception
*/
public function createUser(string $name, ?string $email = null)
{
$this->userRepository->save(new User($name, $email));
}
/**
* @param \Samples\UserService\Entities\User $user
* @throws \Exception
*/
public function updateUser(User $user, string $name, string $email)
{
$user->setName($name)->setEmail($email);
$this->userRepository->update($user);
}
}