You are here

private function ServicePass::extractData in Devel 8

Same name and namespace in other branches
  1. 8.3 webprofiler/src/Compiler/ServicePass.php \Drupal\webprofiler\Compiler\ServicePass::extractData()
  2. 8.2 webprofiler/src/Compiler/ServicePass.php \Drupal\webprofiler\Compiler\ServicePass::extractData()
  3. 4.x webprofiler/src/Compiler/ServicePass.php \Drupal\webprofiler\Compiler\ServicePass::extractData()

Parameters

\Symfony\Component\DependencyInjection\ContainerBuilder $container:

\Symfony\Component\DependencyInjection\Compiler\ServiceReferenceGraph $graph:

Return value

array

1 call to ServicePass::extractData()
ServicePass::process in webprofiler/src/Compiler/ServicePass.php
You can modify the container here before it is dumped to PHP code.

File

webprofiler/src/Compiler/ServicePass.php, line 35

Class

ServicePass
Class ServicePass

Namespace

Drupal\webprofiler\Compiler

Code

private function extractData(ContainerBuilder $container, ServiceReferenceGraph $graph) {
  $data = [];
  foreach ($container
    ->getDefinitions() as $id => $definition) {
    $inEdges = [];
    $outEdges = [];
    if ($graph
      ->hasNode($id)) {
      $node = $graph
        ->getNode($id);

      /** @var \Symfony\Component\DependencyInjection\Compiler\ServiceReferenceGraphEdge $edge */
      foreach ($node
        ->getInEdges() as $edge) {

        /** @var \Symfony\Component\DependencyInjection\Reference $edgeValue */
        $edgeValue = $edge
          ->getValue();
        $inEdges[] = [
          'id' => $edge
            ->getSourceNode()
            ->getId(),
          'invalidBehavior' => $edgeValue ? $edgeValue
            ->getInvalidBehavior() : NULL,
        ];
      }

      /** @var \Symfony\Component\DependencyInjection\Compiler\ServiceReferenceGraphEdge $edge */
      foreach ($node
        ->getOutEdges() as $edge) {

        /** @var \Symfony\Component\DependencyInjection\Reference $edgeValue */
        $edgeValue = $edge
          ->getValue();
        $outEdges[] = [
          'id' => $edge
            ->getDestNode()
            ->getId(),
          'invalidBehavior' => $edgeValue ? $edgeValue
            ->getInvalidBehavior() : NULL,
        ];
      }
    }
    if ($definition instanceof Definition) {
      $class = $definition
        ->getClass();
      try {
        $reflectedClass = new \ReflectionClass($class);
        $file = $reflectedClass
          ->getFileName();
      } catch (\ReflectionException $e) {
        $file = NULL;
      }
      $tags = $definition
        ->getTags();
      $public = $definition
        ->isPublic();
      $synthetic = $definition
        ->isSynthetic();
    }
    else {
      $id = $definition
        ->__toString();
      $class = NULL;
      $file = NULL;
      $tags = [];
      $public = NULL;
      $synthetic = NULL;
    }
    $data[$id] = [
      'inEdges' => $inEdges,
      'outEdges' => $outEdges,
      'value' => [
        'class' => $class,
        'file' => $file,
        'id' => $id,
        'tags' => $tags,
        'public' => $public,
        'synthetic' => $synthetic,
      ],
    ];
  }
  return $data;
}