3 namespace Drupal\Core\DependencyInjection;
5 use Symfony\Component\DependencyInjection\ContainerAwareTrait;
6 use Symfony\Component\DependencyInjection\ContainerAwareInterface;
9 * Implements the class resolver interface supporting class names and services.
11 class ClassResolver implements ClassResolverInterface, ContainerAwareInterface {
12 use DependencySerializationTrait;
13 use ContainerAwareTrait;
18 public function getInstanceFromDefinition($definition) {
19 if ($this->container->has($definition)) {
20 $instance = $this->container->get($definition);
23 if (!class_exists($definition)) {
24 throw new \InvalidArgumentException(sprintf('Class "%s" does not exist.', $definition));
27 if (is_subclass_of($definition, 'Drupal\Core\DependencyInjection\ContainerInjectionInterface')) {
28 $instance = $definition::create($this->container);
31 $instance = new $definition();
35 if ($instance instanceof ContainerAwareInterface) {
36 $instance->setContainer($this->container);