Completed
Pull Request — master (#80)
by Hiraku
02:32
created

JoinPoint::setRequest()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 3
CRAP Score 1
Metric Value
dl 0
loc 4
ccs 3
cts 3
cp 1
rs 10
cc 1
eloc 2
nc 1
nop 1
crap 1
1
<?php
2
/*
3
 * hirak/prestissimo
4
 * @author Hiraku NAKANO
5
 * @license MIT https://github.com/hirak/prestissimo
6
 */
7
namespace Hirak\Prestissimo\Aspects;
8
9
use SplSubject;
10
use SplObserver;
11
use SplObjectStorage;
12
13
/**
14
 * Simple EventDispatcher for extending downloader
15
 */
16
class JoinPoint implements SplSubject
17
{
18
    /** @var SplObjectStorage */
19
    protected $storage;
20
21
    /** @var HttpGetRequest */
22
    protected $request;
23
24
    /** @var HttpGetResponse */
25
    protected $response;
26
27
    /** @var string */
28
    protected $name;
29
30
    /**
31
     * @param string $pointName
32
     */
33 9
    public function __construct($pointName, HttpGetRequest $request)
34
    {
35 9
        $this->name = $pointName;
36 9
        $this->detachAll();
37 9
        $this->request = $request;
38 9
    }
39
40 4
    public function attach(SplObserver $observer)
41
    {
42 4
        $this->storage->attach($observer);
43 4
    }
44
45 1
    public function detach(SplObserver $observer)
46
    {
47 1
        $this->storage->detach($observer);
48 1
    }
49
50 9
    public function detachAll()
51
    {
52 9
        $this->storage = new SplObjectStorage;
53 9
    }
54
55 3
    public function notify()
56
    {
57 3
        foreach ($this->storage as $observer) {
58 3
            $observer->update($this);
59 3
        }
60 3
    }
61
62 7
    final public function refRequest()
63
    {
64 7
        return $this->request;
65
    }
66
67 1
    public function setRequest(HttpGetRequest $req)
68
    {
69 1
        $this->request = $req;
70 1
    }
71
72
    final public function refResponse()
73
    {
74
        return $this->response;
75
    }
76
77
    public function setResponse(HttpGetResponse $res)
78
    {
79
        $this->response = $res;
80
    }
81
82 6
    public function __toString()
83
    {
84 6
        return $this->name;
85
    }
86
}
87