used_by_attrs = collect(); for ($i=0; $iname .= (strlen($this->name) ? ' ' : '').$strings[++$i]; } while (! preg_match("/\'$/s",$strings[$i])); } else { $i++; do { $this->name .= (strlen($this->name) ? ' ' : '').$strings[++$i]; } while (! preg_match("/\'$/s",$strings[$i])); do { $i++; } while (! preg_match('/\)+\)?/',$strings[$i])); } $this->name = preg_replace("/^\'/",'',$this->name); $this->name = preg_replace("/\'$/",'',$this->name); Log::debug(sprintf(sprintf('- Case NAME returned (%s)',$this->name))); break; case 'DESC': do { $this->description .= (strlen($this->description) ? ' ' : '').$strings[++$i]; } while (! preg_match("/\'$/s",$strings[$i])); $this->description = preg_replace("/^\'(.*)\'$/",'$1',$this->description); Log::debug(sprintf('- Case DESC returned (%s)',$this->description)); break; case 'OBSOLETE': $this->is_obsolete = TRUE; Log::debug(sprintf('- Case OBSOLETE returned (%s)',$this->is_obsolete)); break; case 'SYNTAX': $this->syntax = $strings[++$i]; Log::debug(sprintf('- Case SYNTAX returned (%s)',$this->syntax)); break; default: if (preg_match('/[\d\.]+/i',$strings[$i]) && ($i === 1)) { $this->oid = $strings[$i]; Log::debug(sprintf('- Case default returned (%s)',$this->oid)); } elseif ($strings[$i]) Log::alert(sprintf('! Case default discovered a value NOT parsed (%s)',$strings[$i]),['line'=>$line]); } } } public function __get(string $key): mixed { switch ($key) { case 'syntax': return $this->syntax; case 'used_by_attrs': return $this->used_by_attrs; default: return parent::__get($key); } } /** * Adds an attribute name to the list of attributes who use this MatchingRule */ public function addUsedByAttr(string $name): void { $name = trim($name); if ($this->used_by_attrs->search($name) === FALSE) $this->used_by_attrs->push($name); } /** * Gets an array of attribute names (strings) which use this MatchingRule * * @return array The array of attribute names (strings). * @deprecated use $this->used_by_attrs */ public function getUsedByAttrs() { return $this->used_by_attrs; } /** * Sets the list of used_by_attrs to the array specified by $attrs; * * @param Collection $attrs The array of attribute names (strings) which use this MatchingRule */ public function setUsedByAttrs(Collection $attrs): void { $this->used_by_attrs = $attrs; } }