-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathinputPacketLib.php
125 lines (112 loc) · 3.1 KB
/
inputPacketLib.php
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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
<?php
/**
* ________
* ___ __ \____ ______________
* __ / / /_ / / /_ __ \ __ \
* _ /_/ /_ /_/ /_ / / / /_/ /
* /_____/ _\__, / /_/ /_/\____/
* /____/
*
* This program is free: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* @copyright (c) 2020
* @author Y&SS-YassLV
*/
declare(strict_types=1);
namespace dynoLibPacket;
use dynoLibPacket\libInterface\TypeInterface;
class inputPacketLib implements TypeInterface
{
/** @var array */
protected $finalInput = [];
/**
* @param string $baseName
* @param int[] $options Options in libOptions\BaseOptionsInterface
* @return inputPacketLib
*/
public function createBase(string $baseName, array $options = []): self
{
$this->put(self::TYPE_CREATE_BASE, array(
"baseName" => $baseName,
"options" => $options
));
return $this;
}
/**
* @param string $type
* @param array $value
* @return inputPacketLib
* Do not use this if you do not know how !
*/
public function put(string $type, array $value): self
{
array_push($this->finalInput, array(
$type => $value
));
return $this;
}
/**
* @param string $baseName
* @param int[] $options Options in libOptions\BaseOptionsInterface
* @return inputPacketLib
*/
public function removeBase(string $baseName, array $options = []): self
{
$this->put(self::TYPE_REMOVE_BASE, array(
"baseName" => $baseName,
"options" => $options
));
return $this;
}
/**
* @param string $baseName
* @param null|string $identifiable
* @return inputPacketLib
*/
public function baseExist(string $baseName, ?string $identifiable = null): self
{
$this->put(self::TYPE_BASE_EXIST, array(
"baseName" => $baseName,
"identifiable" => $identifiable ?? self::uniqueIdentifiable()
));
return $this;
}
/**
* @return string
*/
protected static function uniqueIdentifiable(): string
{
return uniqid();
}
/**
* @param string $baseName
* @return Base
*/
public function getBase(string $baseName): Base
{
$base = new Base($baseName);
$base->finalInput = $this->finalInput;
return $base;
}
/**
* @param null|string $identifiable
* @return inputPacketLib
*/
public function getAllBase(?string $identifiable = null): self
{
$this->put(self::TYPE_GET_ALL_BASE, array(
"identifiable" => $identifiable ?? self::uniqueIdentifiable()
));
return $this;
}
/**
* @return string
*/
public final function finalInput(): string
{
return json_encode($this->finalInput);
}
}