Content::remove()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 5
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 2
c 0
b 0
f 0
dl 0
loc 5
rs 10
cc 1
nc 1
nop 1
1
<?php
2
3
namespace PlugHttp\Body;
4
5
use PlugHttp\Globals\Post;
6
use PlugHttp\Globals\Server;
7
use PlugHttp\Utils\ArrayUtil;
8
9
class Content
10
{
11
	private Server $server;
12
13
    /**
14
     * @var string|array
15
     */
16
	private $requestBody;
17
18
	public function __construct(Server $server)
19
	{
20
		$this->server = $server;
21
		$this->getBodyRequest();
22
        $this->createProperty();
23
	}
24
25
	private function getBodyRequest()
26
	{
27
        $xml = new XML();
28
        $json = new Json();
29
        $post = new Post();
30
        $formData = new FormData();
31
        $urlEncode = new FormUrlEncoded();
32
        $textPlain = new TextPlain();
33
34
		$json->next($formData);
35
		$formData->next($urlEncode);
36
		$urlEncode->next($textPlain);
37
		$textPlain->next($xml);
38
		$xml->next($post);
39
40
		$this->requestBody = $json->handle($this->server);
41
	}
42
43
	private function createProperty()
44
	{
45
        if (is_array($this->requestBody)) {
46
            foreach ($this->requestBody as $key => $value) {
47
                $this->$key = $value;
48
            }
49
        }
50
    }
51
52
    public function add(string $key, $value): void
53
    {
54
        $this->requestBody[$key] = $value;
55
56
        $this->__set($key, $value);
57
    }
58
59
    public function remove(string $key): void
60
    {
61
        unset($this->requestBody[$key]);
62
63
        unset($this->$key);
64
    }
65
66
    public function get(string $key)
67
    {
68
        return $this->requestBody[$key];
69
    }
70
71
    /**
72
     * @return array|string
73
     */
74
    public function all()
75
    {
76
        return $this->requestBody;
77
    }
78
79
    public function __set($name, $value)
80
    {
81
        $this->$name = $value;
82
    }
83
84
    public function __get($name)
85
    {
86
        $this->$name;
87
    }
88
89
    public function except(array $keys): array
90
    {
91
        return ArrayUtil::except($this->requestBody, $keys);
0 ignored issues
show
Bug introduced by
It seems like $this->requestBody can also be of type string; however, parameter $data of PlugHttp\Utils\ArrayUtil::except() does only seem to accept array, maybe add an additional type check? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-type  annotation

91
        return ArrayUtil::except(/** @scrutinizer ignore-type */ $this->requestBody, $keys);
Loading history...
92
    }
93
94
    public function only(array $keys): array
95
    {
96
        return ArrayUtil::only($this->requestBody, $keys);
0 ignored issues
show
Bug introduced by
It seems like $this->requestBody can also be of type string; however, parameter $data of PlugHttp\Utils\ArrayUtil::only() does only seem to accept array, maybe add an additional type check? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-type  annotation

96
        return ArrayUtil::only(/** @scrutinizer ignore-type */ $this->requestBody, $keys);
Loading history...
97
    }
98
99
    public function has(string $key): bool
100
    {
101
        return !empty($this->requestBody[$key]);
102
    }
103
}