Find this useful? Enter your email to receive occasional updates for securing PHP code.
Signing you up...
Thank you for signing up!
PHP Decode
<?php namespace Drupal\Core\Routing; use Drupal\Core\Routing\Enhancer\RouteEnhancerInter..
Decoded Output download
<?php
namespace Drupal\Core\Routing;
use Drupal\Core\Routing\Enhancer\RouteEnhancerInterface;
use Symfony\Cmf\Component\Routing\Enhancer\RouteEnhancerInterface as BaseRouteEnhancerInterface;
use Symfony\Cmf\Component\Routing\RouteObjectInterface;
use Symfony\Component\DependencyInjection\ContainerAwareInterface;
use Symfony\Component\DependencyInjection\ContainerAwareTrait;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Routing\RouteCollection;
/**
* A route enhancer which lazily loads route enhancers, depending on the route.
*
* We lazy initialize route enhancers, because otherwise all dependencies of
* all route enhancers are initialized on every request, which is slow. However,
* with the use of lazy loading, dependencies are instantiated only when used.
*/
class LazyRouteEnhancer implements BaseRouteEnhancerInterface, ContainerAwareInterface {
use ContainerAwareTrait;
/**
* Array of enhancers service IDs.
*
* @var array
*/
protected $serviceIds = [];
/**
* The initialized route enhancers.
*
* @var \Symfony\Cmf\Component\Routing\Enhancer\RouteEnhancerInterface[]|\Drupal\Core\Routing\Enhancer\RouteEnhancerInterface[]
*/
protected $enhancers = NULL;
/**
* Constructs the LazyRouteEnhancer object.
*
* @param $service_ids
* Array of enhancers service IDs.
*/
public function __construct($service_ids) {
$this->serviceIds = $service_ids;
}
/**
* For each route, saves a list of applicable enhancers to the route.
*
* @param \Symfony\Component\Routing\RouteCollection $route_collection
* A collection of routes to apply enhancer checks to.
*/
public function setEnhancers(RouteCollection $route_collection) {
/** @var \Symfony\Component\Routing\Route $route **/
foreach ($route_collection as $route_name => $route) {
$service_ids = [];
foreach ($this->getEnhancers() as $service_id => $enhancer) {
if ((!$enhancer instanceof RouteEnhancerInterface) || $enhancer->applies($route)) {
$service_ids[] = $service_id;
}
}
if ($service_ids) {
$route->setOption('_route_enhancers', array_unique($service_ids));
}
}
}
/**
* For each route, gets a list of applicable enhancer to the route.
*
* @return \Symfony\Cmf\Component\Routing\Enhancer\RouteEnhancerInterface[]|\Drupal\Core\Routing\Enhancer\RouteEnhancerInterface[]
*/
protected function getEnhancers() {
if (!isset($this->enhancers)) {
foreach ($this->serviceIds as $service_id) {
$this->enhancers[$service_id] = $this->container->get($service_id);
}
}
return $this->enhancers;
}
/**
* {@inheritdoc}
*/
public function enhance(array $defaults, Request $request) {
/** @var \Symfony\Component\Routing\Route $route */
$route = $defaults[RouteObjectInterface::ROUTE_OBJECT];
$enhancer_ids = $route->getOption('_route_enhancers');
if (isset($enhancer_ids)) {
foreach ($enhancer_ids as $enhancer_id) {
$defaults = $this->container->get($enhancer_id)->enhance($defaults, $request);
}
}
return $defaults;
}
}
?>
Did this file decode correctly?
Original Code
<?php
namespace Drupal\Core\Routing;
use Drupal\Core\Routing\Enhancer\RouteEnhancerInterface;
use Symfony\Cmf\Component\Routing\Enhancer\RouteEnhancerInterface as BaseRouteEnhancerInterface;
use Symfony\Cmf\Component\Routing\RouteObjectInterface;
use Symfony\Component\DependencyInjection\ContainerAwareInterface;
use Symfony\Component\DependencyInjection\ContainerAwareTrait;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Routing\RouteCollection;
/**
* A route enhancer which lazily loads route enhancers, depending on the route.
*
* We lazy initialize route enhancers, because otherwise all dependencies of
* all route enhancers are initialized on every request, which is slow. However,
* with the use of lazy loading, dependencies are instantiated only when used.
*/
class LazyRouteEnhancer implements BaseRouteEnhancerInterface, ContainerAwareInterface {
use ContainerAwareTrait;
/**
* Array of enhancers service IDs.
*
* @var array
*/
protected $serviceIds = [];
/**
* The initialized route enhancers.
*
* @var \Symfony\Cmf\Component\Routing\Enhancer\RouteEnhancerInterface[]|\Drupal\Core\Routing\Enhancer\RouteEnhancerInterface[]
*/
protected $enhancers = NULL;
/**
* Constructs the LazyRouteEnhancer object.
*
* @param $service_ids
* Array of enhancers service IDs.
*/
public function __construct($service_ids) {
$this->serviceIds = $service_ids;
}
/**
* For each route, saves a list of applicable enhancers to the route.
*
* @param \Symfony\Component\Routing\RouteCollection $route_collection
* A collection of routes to apply enhancer checks to.
*/
public function setEnhancers(RouteCollection $route_collection) {
/** @var \Symfony\Component\Routing\Route $route **/
foreach ($route_collection as $route_name => $route) {
$service_ids = [];
foreach ($this->getEnhancers() as $service_id => $enhancer) {
if ((!$enhancer instanceof RouteEnhancerInterface) || $enhancer->applies($route)) {
$service_ids[] = $service_id;
}
}
if ($service_ids) {
$route->setOption('_route_enhancers', array_unique($service_ids));
}
}
}
/**
* For each route, gets a list of applicable enhancer to the route.
*
* @return \Symfony\Cmf\Component\Routing\Enhancer\RouteEnhancerInterface[]|\Drupal\Core\Routing\Enhancer\RouteEnhancerInterface[]
*/
protected function getEnhancers() {
if (!isset($this->enhancers)) {
foreach ($this->serviceIds as $service_id) {
$this->enhancers[$service_id] = $this->container->get($service_id);
}
}
return $this->enhancers;
}
/**
* {@inheritdoc}
*/
public function enhance(array $defaults, Request $request) {
/** @var \Symfony\Component\Routing\Route $route */
$route = $defaults[RouteObjectInterface::ROUTE_OBJECT];
$enhancer_ids = $route->getOption('_route_enhancers');
if (isset($enhancer_ids)) {
foreach ($enhancer_ids as $enhancer_id) {
$defaults = $this->container->get($enhancer_id)->enhance($defaults, $request);
}
}
return $defaults;
}
}
Function Calls
None |
Stats
MD5 | 57d735357d55c013c3bef7dac785ade2 |
Eval Count | 0 |
Decode Time | 90 ms |