%PDF- %PDF-
| Direktori : /home/graphicd/public_html/vebto/vendor/kreait/firebase-php/src/Firebase/RemoteConfig/ |
| Current File : /home/graphicd/public_html/vebto/vendor/kreait/firebase-php/src/Firebase/RemoteConfig/Condition.php |
<?php
declare(strict_types=1);
namespace Kreait\Firebase\RemoteConfig;
class Condition implements \JsonSerializable
{
/** @var string */
private $name;
/** @var string */
private $expression;
/** @var TagColor|null */
private $tagColor;
private function __construct(string $name, string $expression, ?TagColor $tagColor = null)
{
$this->name = $name;
$this->expression = $expression;
$this->tagColor = $tagColor;
}
/**
* @param array<string, string> $data
*/
public static function fromArray(array $data): self
{
return new self(
$data['name'],
$data['expression'],
isset($data['tagColor']) ? new TagColor($data['tagColor']) : null
);
}
public static function named(string $name): self
{
return new self($name, 'false', null);
}
public function name(): string
{
return $this->name;
}
public function expression(): string
{
return $this->expression;
}
public function withExpression(string $expression): self
{
$condition = clone $this;
$condition->expression = $expression;
return $condition;
}
/**
* @param TagColor|string $tagColor
*/
public function withTagColor($tagColor): self
{
$tagColor = $tagColor instanceof TagColor ? $tagColor : new TagColor($tagColor);
$condition = clone $this;
$condition->tagColor = $tagColor;
return $condition;
}
/**
* @return array<string, string>
*/
public function jsonSerialize(): array
{
return \array_filter([
'name' => $this->name,
'expression' => $this->expression,
'tagColor' => $this->tagColor ? $this->tagColor->value() : null,
], static function ($value) {
return $value !== null;
});
}
}