public function matches($className, $methodName, $methodDeclaringClassName, $pointcutQueryIdentifier)
{
if ($this->filters === null) {
$this->buildPointcutFilters();
}
$matches = false;
/** @var PointcutFilterComposite $filter */
foreach ($this->filters as $privilegeIdentifier => $filter) {
if ($filter->matches($className, $methodName, $methodDeclaringClassName, $pointcutQueryIdentifier)) {
$matches = true;
$methodIdentifier = strtolower($className . '->' . $methodName);
$hasRuntimeEvaluations = false;
if ($filter->hasRuntimeEvaluationsDefinition() === true) {
$hasRuntimeEvaluations = true;
$this->runtimeExpressionEvaluator->addExpression($privilegeIdentifier, $filter->getRuntimeEvaluationsClosureCode());
}
$this->methodPermissions[$methodIdentifier][$privilegeIdentifier]['privilegeMatchesMethod'] = true;
$this->methodPermissions[$methodIdentifier][$privilegeIdentifier]['hasRuntimeEvaluations'] = $hasRuntimeEvaluations;
}
}
return $matches;
}