$tokenDataRaw) { $token = new Token($matches[0][$key]); $parts = $this->getPartsDividedByPipe($tokenDataRaw); $token->setObjectName($parts[0]); foreach ($parts as $part) { $options = $this->trimArrayElements(explode('=', $part)); if (2 !== count($options)) { continue; } $keyword = $options[0]; $value = $options[1]; if ('mapped-integration-object' === $keyword) { $token->setObjectName($value); } if ('integration' === $keyword) { $token->setIntegration($value); } if ('default' === $keyword) { $token->setDefaultValue($value); } if ('link-text' == $keyword) { $token->setLinkText($value); } if ('base-url' == $keyword) { $token->setBaseURL($value); } } $tokens->set($token->getToken(), $token); } return $tokens; } public function buildTokenWithDefaultOptions($integrationObjectName, $integration, $default, $linkText, $baseURL): string { return sprintf( '{mapped-integration-object=%s | integration=%s | default=%s | link-text=%s | base-url=%s}', $integrationObjectName, $integration, $default, $linkText, $baseURL ); } /** * @return string[] */ private function getPartsDividedByPipe(string $tokenDataRaw): array { return $this->trimArrayElements(explode('|', $tokenDataRaw)); } /** * @param string[] $array * * @return string[] */ private function trimArrayElements(array $array): array { return array_map('trim', $array); } }