public function getEvaluationContext(IResolvedParameterRegistry $parameters = null) { $thisObject = null; $variableTable = array_fill_keys($this->parameterScopedVariableMap, null); unset($variableTable['this']); if ($parameters !== null) { foreach ($this->parameterScopedVariableMap as $parameter => $variableName) { if ($variableName === 'this') { $thisObject = $parameters[$parameter]; } else { $variableTable[$variableName] = $parameters[$parameter]; } } } foreach ($this->unusedParameterDefaultMap as $name => $evaluator) { $variableTable[$name] = $evaluator->evaluate(); } return new O\EvaluationContext($this->namespace, $this->scopeType, $thisObject, $variableTable); }
public function doEvaluate(IResolvedParameterRegistry $parameters) { if ($this->contextFactory === null) { return $this->evaluator->evaluate(); } $resolvedContext = $this->contextFactory->getEvaluationContext($parameters); return $this->evaluator->evaluateWithNewThis($resolvedContext->getThis(), $resolvedContext->getVariableTable()); }