UserContextServiceAwareTrait.php 1.34 KB
Newer Older
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
56
<?php

namespace UnicaenAuth\Service\Traits;

use UnicaenAuth\Service\UserContextService;
use RuntimeException;

/**
 * Description of UserContextServiceAwareTrait
 *
 * @author Laurent LÉCLUSE <laurent.lecluse at unicaen.fr>
 */
trait UserContextServiceAwareTrait
{
    /**
     * @var UserContextService
     */
    private $serviceUserContext;



    /**
     * @param UserContextService $serviceUserContext
     *
     * @return self
     */
    public function setServiceUserContext(UserContextService $serviceUserContext)
    {
        $this->serviceUserContext = $serviceUserContext;

        return $this;
    }



    /**
     * @return UserContextService
     * @throws RuntimeException
     */
    public function getServiceUserContext()
    {
        if (empty($this->serviceUserContext)) {
            if (!method_exists($this, 'getServiceLocator')) {
                throw new RuntimeException('La classe ' . get_class($this) . ' n\'a pas accès au ServiceLocator.');
            }

            $serviceLocator = $this->getServiceLocator();
            if (method_exists($serviceLocator, 'getServiceLocator')) {
                $serviceLocator = $serviceLocator->getServiceLocator();
            }
            $this->serviceUserContext = $serviceLocator->get('UnicaenAuth\Service\UserContext');
        }

        return $this->serviceUserContext;
    }
}