<?php declare(strict_types=1); namespace Iodev\Whois\Helpers; trait GroupTrait { /** @var array */ private $groups = []; /** @var string */ private $headerKey = '$header'; /** @var array */ private $domainKeys = []; /** @var array */ private $subsetParams = []; /** @var bool */ private $matchFirstOnly = false; /** @var bool */ private $ignoreCase = false; /** * @return $this */ public function cloneMe() { return clone $this; } /** * @return bool */ public function isEmptyGroups() { return empty($this->groups); } /** * @return array */ public function getFirstGroup() { return count($this->groups) ? $this->groups[0] : null; } /** * @return array */ public function getGroups() { return $this->groups; } /** * @param array $groups * @return $this */ public function setGroups($groups) { $this->groups = $groups; return $this; } /** * @param array $group * @return $this */ public function setOneGroup($group) { $this->groups = $group ? [ $group ] : []; return $this; } /** * @return $this */ public function useFirstGroup() { return $this->setOneGroup($this->getFirstGroup()); } /** * @param array $group * @return $this */ public function useFirstGroupOr($group) { $first = $this->getFirstGroup(); return $this->setOneGroup(empty($first) ? $group : $first); } /** * @return $this */ public function mergeGroups() { $finalGroup = []; foreach ($this->groups as $group) { $finalGroup = array_merge_recursive($finalGroup, $group); } $this->groups = [ $finalGroup ]; return $this; } /** * @param string $key * @return $this */ public function setHeaderKey($key) { $this->headerKey = $key; return $this; } /** * @param array $keys * @return $this */ public function setDomainKeys($keys) { $this->domainKeys = $keys; return $this; } /** * @param array $params * @return $this */ public function setSubsetParams($params) { $this->subsetParams = $params; return $this; } /** * @param bool $val * @return $this */ public function useMatchFirstOnly($val) { $this->matchFirstOnly = (bool)$val; return $this; } /** * @param bool $val * @return $this */ public function useIgnoreCase($val) { $this->ignoreCase = (bool)$val; return $this; } }