22declare(strict_types=1);
26use
function array_flip;
30use
function is_string;
35 private array $plugins;
36 private bool $isWhitelist =
false;
41 public function __construct(array $plugins = [],
bool $whitelist =
false){
42 $this->plugins = array_flip($plugins);
43 $this->isWhitelist = $whitelist;
50 return array_flip($this->plugins);
53 public function isWhitelist() : bool{
54 return $this->isWhitelist;
61 return $this->isWhitelist() === isset($this->plugins[$name]);
68 if(!isset($array[
"mode"]) || ($array[
"mode"] !==
"whitelist" && $array[
"mode"] !==
"blacklist")){
69 throw new \InvalidArgumentException(
"\"mode\" must be set");
71 $isWhitelist = match($array[
"mode"]){
76 if(isset($array[
"plugins"])){
77 if(!is_array($array[
"plugins"])){
78 throw new \InvalidArgumentException(
"\"plugins\" must be an array");
80 foreach($array[
"plugins"] as $k => $v){
81 if(!is_string($v) && !is_int($v) && !is_float($v)){
82 throw new \InvalidArgumentException(
"\"plugins\" contains invalid element at position $k");
84 $plugins[] = (string) $v;
87 return new PluginGraylist($plugins, $isWhitelist);
96 "mode" => $this->isWhitelist ?
'whitelist' :
'blacklist',
97 "plugins" => $this->plugins
__construct(array $plugins=[], bool $whitelist=false)
static fromArray(array $array)