Completed
Pull Request — master (#10)
by
unknown
02:31
created

UserRepositoryCollection   A

Complexity

Total Complexity 7

Size/Duplication

Total Lines 59
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 1

Importance

Changes 4
Bugs 0 Features 0
Metric Value
wmc 7
c 4
b 0
f 0
lcom 1
cbo 1
dl 0
loc 59
rs 10

4 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 6 2
A addUserRepository() 0 4 1
A all() 0 4 1
A findRepositoryByClassName() 0 10 3
1
<?php
2
3
namespace SumoCoders\FrameworkMultiUserBundle\User;
4
5
use SumoCoders\FrameworkMultiUserBundle\Exception\RepositoryNotRegisteredException;
6
7
class UserRepositoryCollection
8
{
9
    /**
10
     * @var array
11
     */
12
    private $userRepositories = [];
13
14
    /**
15
     * UserRepositoryCollection constructor.
16
     *
17
     * @param array $userRepositories
18
     */
19
    public function __construct(array $userRepositories)
20
    {
21
        foreach ($userRepositories as $repository) {
22
            $this->addUserRepository($repository);
23
        }
24
    }
25
26
    /**
27
     * Registers the UserRepository to the UserRepositoryCollection.
28
     *
29
     * @param UserRepository $userRepository
30
     */
31
    public function addUserRepository(UserRepository $userRepository)
32
    {
33
        $this->userRepositories[] = $userRepository;
34
    }
35
36
    /**
37
     * Get the userRepositories.
38
     *
39
     * @return array
40
     */
41
    public function all()
42
    {
43
        return $this->userRepositories;
44
    }
45
46
    /**
47
     * Find the UserRepository for a given User Class.
48
     *
49
     * @param $className
50
     *
51
     * @throws RepositoryNotRegisteredException
52
     *
53
     * @return UserRepository
54
     */
55
    public function findRepositoryByClassName($className)
56
    {
57
        foreach ($this->userRepositories as $repository) {
58
            if ($repository->supportsClass($className)) {
59
                return $repository;
60
            }
61
        }
62
63
        throw RepositoryNotRegisteredException::withClassName($className);
64
    }
65
}
66