CodeExplorer collectCircularReferences example
$this->circularReferences =
[];
$this->singleUsePrivateIds =
[];
foreach ($this->container->
getCompiler()->
getServiceReferenceGraph()->
getNodes() as $id =>
$node) { if (!
$node->
getValue() instanceof Definition
) { continue;
} if ($this->
isSingleUsePrivateNode($node)) { $this->singleUsePrivateIds
[$id] =
$id;
} $this->
collectCircularReferences($id,
$node->
getOutEdges(),
$checkedNodes);
} $this->container->
getCompiler()->
getServiceReferenceGraph()->
clear();
$this->singleUsePrivateIds =
array_diff_key($this->singleUsePrivateIds,
$this->circularReferences
);
} private function collectCircularReferences(string
$sourceId, array
$edges, array &
$checkedNodes, array &
$loops =
[], array
$path =
[], bool
$byConstructor = true
): void
{ $path[$sourceId] =
$byConstructor;
$checkedNodes[$sourceId] = true;
foreach ($edges as $edge) { $this->circularReferences =
[];
$this->singleUsePrivateIds =
[];
foreach ($this->container->
getCompiler()->
getServiceReferenceGraph()->
getNodes() as $id =>
$node) { if (!
$node->
getValue() instanceof Definition
) { continue;
} if ($this->
isSingleUsePrivateNode($node)) { $this->singleUsePrivateIds
[$id] =
$id;
} $this->
collectCircularReferences($id,
$node->
getOutEdges(),
$checkedNodes);
} $this->container->
getCompiler()->
getServiceReferenceGraph()->
clear();
$this->singleUsePrivateIds =
array_diff_key($this->singleUsePrivateIds,
$this->circularReferences
);
} private function collectCircularReferences(string
$sourceId, array
$edges, array &
$checkedNodes, array &
$loops =
[], array
$path =
[], bool
$byConstructor = true
): void
{ $path[$sourceId] =
$byConstructor;
$checkedNodes[$sourceId] = true;
foreach ($edges as $edge) { $this->circularReferences =
[];
$this->singleUsePrivateIds =
[];
foreach ($this->container->
getCompiler()->
getServiceReferenceGraph()->
getNodes() as $id =>
$node) { if (!
$node->
getValue() instanceof Definition
) { continue;
} if ($this->
isSingleUsePrivateNode($node)) { $this->singleUsePrivateIds
[$id] =
$id;
} $this->
collectCircularReferences($id,
$node->
getOutEdges(),
$checkedNodes);
} $this->container->
getCompiler()->
getServiceReferenceGraph()->
clear();
$this->singleUsePrivateIds =
array_diff_key($this->singleUsePrivateIds,
$this->circularReferences
);
} private function collectCircularReferences(string
$sourceId, array
$edges, array &
$checkedNodes, array &
$loops =
[], array
$path =
[], bool
$byConstructor = true
): void
{ $path[$sourceId] =
$byConstructor;
$checkedNodes[$sourceId] = true;
foreach ($edges as $edge) {