| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 | 
							- <?php
 - 
 - namespace JMS\DiExtraBundle\Metadata\Driver;
 - 
 - use JMS\DiExtraBundle\Metadata\ClassMetadata;
 - 
 - use Metadata\Driver\DriverInterface;
 - 
 - class ConfiguredControllerInjectionsDriver implements DriverInterface
 - {
 -     private $delegate;
 -     private $propertyInjections;
 -     private $methodInjections;
 - 
 -     public function __construct(DriverInterface $driver, array $propertyInjections, array $methodInjections)
 -     {
 -         $this->delegate = $driver;
 -         $this->propertyInjections = $propertyInjections;
 -         $this->methodInjections = $methodInjections;
 -     }
 - 
 -     public function loadMetadataForClass(\ReflectionClass $class)
 -     {
 -         $metadata = $this->delegate->loadMetadataForClass($class);
 - 
 -         if (!preg_match('/Controller\\\(.+)Controller$/', $class->name)) {
 -             return $metadata;
 -         }
 - 
 -         if (null === $metadata) {
 -             $metadata = new ClassMetadata($class->name);
 -         }
 - 
 -         foreach ($metadata->reflection->getProperties() as $property) {
 -             // explicit injection configured?
 -             if (isset($metadata->properties[$property->name])) {
 -                 continue;
 -             }
 - 
 -             // automatic injection configured?
 -             if (!isset($this->propertyInjections[$property->name])) {
 -                 continue;
 -             }
 - 
 -             if ($property->getDeclaringClass()->name !== $class->name) {
 -                 continue;
 -             }
 - 
 -             $metadata->properties[$property->name] = $this->propertyInjections[$property->name];
 -         }
 - 
 -         foreach ($metadata->reflection->getMethods(\ReflectionMethod::IS_PUBLIC) as $method) {
 -             // explicit injection configured?
 -             foreach ($metadata->methodCalls as $call) {
 -                 if ($call[0] === $method->name) {
 -                     continue 2;
 -                 }
 -             }
 - 
 -             // automatic injection configured?
 -             if (!isset($this->methodInjections[$method->name])) {
 -                 continue;
 -             }
 - 
 -             if ($method->getDeclaringClass()->name !== $class->name) {
 -                 continue;
 -             }
 - 
 -             $metadata->methodCalls[] = array($method->name, $this->methodInjections[$method->name]);
 -         }
 - 
 -         return $metadata->properties || $metadata->methodCalls || $metadata->lookupMethods ? $metadata : null;
 -     }
 - }
 
 
  |