protected function OptimizedPhpArrayDumper::getServiceDefinition in Service Container 7.2
Same name and namespace in other branches
- 7 lib/Drupal/Component/DependencyInjection/Dumper/OptimizedPhpArrayDumper.php \Drupal\Component\DependencyInjection\Dumper\OptimizedPhpArrayDumper::getServiceDefinition()
Gets a service definition as PHP array.
Parameters
\Symfony\Component\DependencyInjection\Definition $definition: The definition to process.
Return value
array The service definition as PHP array.
Throws
\Symfony\Component\DependencyInjection\Exception\InvalidArgumentException Thrown when the definition is marked as decorated, or with an explicit scope different from SCOPE_CONTAINER and SCOPE_PROTOTYPE.
2 calls to OptimizedPhpArrayDumper::getServiceDefinition()
- OptimizedPhpArrayDumper::getPrivateServiceCall in lib/
Drupal/ Component/ DependencyInjection/ Dumper/ OptimizedPhpArrayDumper.php - Gets a private service definition in a suitable format.
- OptimizedPhpArrayDumper::getServiceDefinitions in lib/
Drupal/ Component/ DependencyInjection/ Dumper/ OptimizedPhpArrayDumper.php - Gets services of the container as a PHP array.
File
- lib/
Drupal/ Component/ DependencyInjection/ Dumper/ OptimizedPhpArrayDumper.php, line 204 - Contains \Drupal\Component\DependencyInjection\Dumper\OptimizedPhpArrayDumper.
Class
- OptimizedPhpArrayDumper
- OptimizedPhpArrayDumper dumps a service container as a serialized PHP array.
Namespace
Drupal\Component\DependencyInjection\DumperCode
protected function getServiceDefinition(Definition $definition) {
$service = array();
if ($definition
->getClass()) {
$service['class'] = $definition
->getClass();
}
if (!$definition
->isPublic()) {
$service['public'] = FALSE;
}
if ($definition
->getFile()) {
$service['file'] = $definition
->getFile();
}
if ($definition
->isSynthetic()) {
$service['synthetic'] = TRUE;
}
if ($definition
->isLazy()) {
$service['lazy'] = TRUE;
}
if ($definition
->getArguments()) {
$arguments = $definition
->getArguments();
$service['arguments'] = $this
->dumpCollection($arguments);
$service['arguments_count'] = count($arguments);
}
else {
$service['arguments_count'] = 0;
}
if ($definition
->getProperties()) {
$service['properties'] = $this
->dumpCollection($definition
->getProperties());
}
if ($definition
->getMethodCalls()) {
$service['calls'] = $this
->dumpMethodCalls($definition
->getMethodCalls());
}
if (($scope = $definition
->getScope()) !== ContainerInterface::SCOPE_CONTAINER) {
if ($scope === ContainerInterface::SCOPE_PROTOTYPE) {
// Scope prototype has been replaced with 'shared' => FALSE.
// This is a Symfony 2.8 forward compatibility fix.
// Reference: https://github.com/symfony/symfony/blob/2.8/UPGRADE-2.8.md#dependencyinjection
$service['shared'] = FALSE;
}
else {
throw new InvalidArgumentException("The 'scope' definition is deprecated in Symfony 3.0 and not supported by Drupal 8.");
}
}
if (($decorated = $definition
->getDecoratedService()) !== NULL) {
throw new InvalidArgumentException("The 'decorated' definition is not supported by the Drupal 8 run-time container. The Container Builder should have resolved that during the DecoratorServicePass compiler pass.");
}
if ($callable = $definition
->getFactory()) {
$service['factory'] = $this
->dumpCallable($callable);
}
if ($callable = $definition
->getConfigurator()) {
$service['configurator'] = $this
->dumpCallable($callable);
}
return $service;
}