%PDF- %PDF-
Direktori : /home/vacivi36/intranet.vacivitta.com.br/protected/vendor/softcreatr/jsonpath/src/ |
Current File : /home/vacivi36/intranet.vacivitta.com.br/protected/vendor/softcreatr/jsonpath/src/JSONPathToken.php |
<?php /** * JSONPath implementation for PHP. * * @license https://github.com/SoftCreatR/JSONPath/blob/main/LICENSE MIT License */ declare(strict_types=1); namespace Flow\JSONPath; use function class_exists; use function in_array; use function ucfirst; class JSONPathToken { /* * Tokens */ public const T_INDEX = 'index'; public const T_RECURSIVE = 'recursive'; public const T_QUERY_RESULT = 'queryResult'; public const T_QUERY_MATCH = 'queryMatch'; public const T_SLICE = 'slice'; public const T_INDEXES = 'indexes'; /** * @var string */ public $type; public $value; /** * @throws JSONPathException */ public function __construct(string $type, $value) { $this->validateType($type); $this->type = $type; $this->value = $value; } /** * @throws JSONPathException */ public function validateType(string $type): void { if (!in_array($type, static::getTypes(), true)) { throw new JSONPathException('Invalid token: ' . $type); } } public static function getTypes(): array { return [ static::T_INDEX, static::T_RECURSIVE, static::T_QUERY_RESULT, static::T_QUERY_MATCH, static::T_SLICE, static::T_INDEXES, ]; } /** * @throws JSONPathException */ public function buildFilter(bool $options) { $filterClass = 'Flow\\JSONPath\\Filters\\' . ucfirst($this->type) . 'Filter'; if (!class_exists($filterClass)) { throw new JSONPathException("No filter class exists for token [{$this->type}]"); } return new $filterClass($this, $options); } }