Completed
Push — master ( 1e7bfa...d3403d )
by Hiraku
17:08
created

JoinPoint::setRequest()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 2

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 0
loc 4
ccs 0
cts 3
cp 0
rs 10
cc 1
eloc 2
nc 1
nop 1
crap 2
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 2
    public function __construct($pointName, HttpGetRequest $request)
34
    {
35 2
        $this->name = $pointName;
36 2
        $this->detachAll();
37 2
        $this->request = $request;
38 2
    }
39
40 2
    public function attach(SplObserver $observer)
41
    {
42 2
        $this->storage->attach($observer);
43 2
    }
44
45
    public function attachArray(array $observers)
46
    {
47
        $storage = $this->storage;
48
        foreach ($observers as $observer) {
49
            $storage->attach($observer);
50
        }
51
    }
52
53
    public function detach(SplObserver $observer)
54
    {
55
        $this->storage->detach($observer);
56
    }
57
58 2
    public function detachAll()
59
    {
60 2
        $this->storage = new SplObjectStorage;
61 2
    }
62
63
    public function notify()
64
    {
65
        foreach ($this->storage as $observer) {
66
            $observer->update($this);
67
        }
68
    }
69
70
    final public function refRequest()
71
    {
72
        return $this->request;
73
    }
74
75
    public function setRequest(HttpGetRequest $req)
76
    {
77
        $this->request = $req;
78
    }
79
80
    final public function refResponse()
81
    {
82
        return $this->response;
83
    }
84
85
    public function setResponse(HttpGetResponse $res)
86
    {
87
        $this->response = $res;
88
    }
89
90 2
    public function __toString()
91
    {
92 2
        return $this->name;
93
    }
94
}
95