private function createLinkUrl(LinkMetadata $link, $object) { $language = new ExpressionLanguage(); $compiledParams = array(); foreach ($link->getParams() as $key => $expr) { $compiledParams[$key] = $language->evaluate($expr, array('object' => $object)); } return $this->router->generate($link->getRoute(), $compiledParams, true); }
private function createLinkNode(LinkMetadata $link, XmlSerializationVisitor $visitor, $object) { $language = new ExpressionLanguage(); $compiledParams = array(); foreach ($link->getParams() as $key => $expr) { $compiledParams[$key] = $language->evaluate($expr, array('object' => $object)); } $linkNode = $visitor->getDocument()->createElement('link'); $linkNode->setAttribute('id', $link->getName()); $linkNode->setAttribute('rel', $link->getEntity()); $linkNode->setAttribute('href', $this->router->generate($link->getRoute(), $compiledParams, true)); return $linkNode; }
/** * Ensure that dynamic settings are correctly reset, * so that services that rely on those are correctly updated */ private function resetDynamicSettings() { // Ensure to reset services that need to be. foreach ($this->resettableServiceIds as $serviceId) { if (!$this->container->initialized($serviceId)) { continue; } $this->container->set($serviceId, null); } // Update services that can be updated. foreach ($this->updatableServices as $serviceId => $methodCalls) { if (!$this->container->initialized($serviceId)) { continue; } $service = $this->container->get($serviceId); foreach ($methodCalls as $callConfig) { list($method, $expression) = $callConfig; $argument = $this->expressionLanguage->evaluate($expression, ['container' => $this->container]); call_user_func_array([$service, $method], [$argument]); } } }
private function validateExpressionResult($className, Expression $expression, $allowsNull, ExpressionLanguage $expressionLanguage) { try { $result = $expressionLanguage->evaluate($expression, array('container' => $this->containerBuilder)); } catch (\Exception $exception) { throw new InvalidExpressionException($expression, $exception); } if ($result === null) { if ($allowsNull) { return; } throw new TypeHintMismatchException(sprintf('Argument for type-hint "%s" is an expression that evaluates to null, which is not allowed', $className)); } if (!is_object($result)) { throw new TypeHintMismatchException(sprintf('Argument for type-hint "%s" is an expression that evaluates to a non-object', $className)); } $resultingClass = get_class($result); $this->validateClass($className, $resultingClass); }