function allow($pattern, $action) { so_query::ensure($pattern); if ($this->check($pattern->uri, $action)) { return $this; } $this->storage[] = array('so_permit_pattern' => (string) $pattern, 'so_permit_action' => (string) $action); unset($this->list); return $this; }
function match($subject) { so_query::ensure($subject); $iterP = $this->getIterator(); $iterS = $subject->getIterator(); while (true) { if (!$iterP->valid()) { return !$iterS->valid(); } if (!$iterS->valid()) { return false; } if ($iterP->key() !== $iterS->key()) { return false; } if ($iterP->current()) { if ($iterP->current() !== $iterS->current()) { return false; } } $iterP->next(); $iterS->next(); } }