Example #1
0
 /**
  *
  * @param MetadataMethod $metadata
  * @return \mixed[]
  * @throws InvalidTypeException
  */
 private function getMethodArguments(MetadataMethod $metadata)
 {
     $arguments = [];
     foreach ($metadata->getArguments() as $argument) {
         $value = null;
         switch ($argument['type']) {
             case MetadataMethod::PRIMITIVE_TYPE:
                 $value = $argument['value'];
                 break;
             case MetadataMethod::STATIC_TYPE:
                 $value = constant($argument['value']);
                 break;
             case MetadataMethod::REFERENCE_TYPE:
                 $value = $this->get($argument['value']);
                 break;
             default:
                 throw new InvalidTypeException($argument['type']);
         }
         $arguments[] = $value;
     }
     return $arguments;
 }
 public function testGetInvalidTypeException()
 {
     $metadataClass = new MetadataClass('standalone', 'Asset\\StandaloneClass');
     $metadataMethod = new MetadataMethod('__construct');
     $metadataMethod->addArgument('unknown', 'param1');
     $metadataMethod->addArgument(MetadataMethod::PRIMITIVE_TYPE, 'param2');
     $metadataClass->registerInvoke($metadataMethod);
     $metadataMethod = new MetadataMethod('setParam3');
     $metadataMethod->addArgument(MetadataMethod::PRIMITIVE_TYPE, 'data');
     $metadataClass->registerInvoke($metadataMethod);
     $di = new DependencyInjection();
     $di->register($metadataClass);
     $exception = null;
     try {
         $di->get('standalone');
     } catch (\Exception $e) {
         $exception = $e;
     }
     $this->assertInstanceOf(InvalidTypeException::class, $exception);
 }
Example #3
0
 /**
  *
  * @param Config $methodNode
  * @return MetadataMethod
  */
 private function getMetadataDependencyMethod(Config $methodNode)
 {
     $metadataMethod = new MetadataMethod($methodNode->getAttribute('name'));
     foreach ($methodNode->getNodes('argument') as $argumentNode) {
         /**
          * @var Config $argumentNode
          */
         $metadataMethod->addArgument($argumentNode->getAttribute('type'), $argumentNode->getAttribute('value'));
     }
     return $metadataMethod;
 }