<?php namespace Xentral\Widgets\SuperSearch\Query; use Xentral\Widgets\SuperSearch\Exception\InvalidArgumentException; final class DetailQuery { /** @var string $groupKey */ private $groupKey; /** @var int|string $itemIdentifier */ private $itemIdentifier; /** * @param string $groupKey * @param int|string $itemIdentifier * * @throws InvalidArgumentException */ public function __construct($groupKey, $itemIdentifier) { $groupKeyCleaned = (string)preg_replace('#[^a-z_]#', '', $groupKey); if ($groupKey !== $groupKeyCleaned) { throw new InvalidArgumentException( 'Invalid characters in $groupKey. Allowed characters: a-z and underscore.' ); } if (!is_int($itemIdentifier) && !is_string($itemIdentifier)) { throw new InvalidArgumentException(sprintf( 'Invalid argument type for $itemIdentifier. Only integer or string is allowed. Type given: %s.', gettype($itemIdentifier) )); } $this->groupKey = (string)$groupKey; $this->itemIdentifier = $itemIdentifier; } /** * @return string */ public function getGroupKey() { return $this->groupKey; } /** * @return int|string */ public function getItemIdentifier() { return $this->itemIdentifier; } }