Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
| Total | |
100.00% |
1 / 1 |
|
100.00% |
1 / 1 |
CRAP | |
100.00% |
10 / 10 |
| ClassResolver | |
100.00% |
1 / 1 |
|
100.00% |
1 / 1 |
5 | |
100.00% |
10 / 10 |
| getInstanceFromDefinition | |
100.00% |
1 / 1 |
5 | |
100.00% |
10 / 10 |
|||
| <?php | |
| /** | |
| * @file | |
| * Contains \Drupal\Core\DependencyInjection\ClassResolver. | |
| */ | |
| namespace Drupal\Core\DependencyInjection; | |
| use Symfony\Component\DependencyInjection\ContainerAwareTrait; | |
| use Symfony\Component\DependencyInjection\ContainerAwareInterface; | |
| /** | |
| * Implements the class resolver interface supporting class names and services. | |
| */ | |
| class ClassResolver implements ClassResolverInterface, ContainerAwareInterface { | |
| use DependencySerializationTrait; | |
| use ContainerAwareTrait; | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| public function getInstanceFromDefinition($definition) { | |
| if ($this->container->has($definition)) { | |
| $instance = $this->container->get($definition); | |
| } | |
| else { | |
| if (!class_exists($definition)) { | |
| throw new \InvalidArgumentException(sprintf('Class "%s" does not exist.', $definition)); | |
| } | |
| if (is_subclass_of($definition, 'Drupal\Core\DependencyInjection\ContainerInjectionInterface')) { | |
| $instance = $definition::create($this->container); | |
| } | |
| else { | |
| $instance = new $definition(); | |
| } | |
| } | |
| if ($instance instanceof ContainerAwareInterface) { | |
| $instance->setContainer($this->container); | |
| } | |
| return $instance; | |
| } | |
| } |