parse(trim($fullToken)); } public function getFullToken(): string { return $this->fullToken; } public function getFieldAlias(): string { return $this->fieldAlias; } public function getDefaultValue(): ?string { return $this->defaultValue; } private function parse(string $fullToken): void { preg_match('/^{contactfield=(.*?)}$/', $fullToken, $matches); if (empty($matches[1])) { throw new InvalidContactFieldTokenException("'{$fullToken}' is not a valid contact field token. A valid token example: '{contactfield=firstname|John}'"); } $barStringTransformer = new BarStringTransformer(); $array = $barStringTransformer->reverseTransform($matches[1]); $this->fieldAlias = $array[0]; $this->defaultValue = $array[1] ?? null; } }