Beispiel #1
0
 /**
  * @param ContextInterface|TypeContext|PropertyContext $context
  */
 public function apply(ContextInterface $context)
 {
     $type = $context->getType();
     $typeName = $type->getName();
     $rule = array_key_exists($typeName, $this->typeMap) ? $this->typeMap[$typeName] : $this->defaultRule;
     $rule->apply($context);
 }
 /**
  * @param ContextInterface $context
  *
  * @return bool
  */
 public function appliesToContext(ContextInterface $context)
 {
     if (!$context instanceof TypeContext && !$context instanceof PropertyContext) {
         return false;
     }
     $type = $context->getType();
     if (!preg_match($this->regex, $type->getName())) {
         return false;
     }
     return $this->subRule->appliesToContext($context);
 }
Beispiel #3
0
 /**
  * @param ContextInterface|PropertyContext $context
  *
  * @throws AssemblerException
  */
 public function assemble(ContextInterface $context)
 {
     $class = $context->getClass();
     $property = $context->getProperty();
     try {
         $methodName = Normalizer::generatePropertyMethod('get', $property->getName());
         $class->removeMethod($methodName);
         $class->addMethodFromGenerator(MethodGenerator::fromArray(['name' => $methodName, 'parameters' => [], 'visibility' => MethodGenerator::VISIBILITY_PUBLIC, 'body' => sprintf('return $this->%s;', $property->getName()), 'docblock' => DocBlockGenerator::fromArray(['tags' => [['name' => 'return', 'description' => $property->getType()]]])]));
     } catch (\Exception $e) {
         throw AssemblerException::fromException($e);
     }
 }
 /**
  * @param ContextInterface|TypeContext $context
  */
 public function assemble(ContextInterface $context)
 {
     $class = $context->getClass();
     $type = $context->getType();
     try {
         $class->removeMethod('__construct');
         $constructor = $this->assembleConstructor($type);
         $class->addMethodFromGenerator($constructor);
     } catch (\Exception $e) {
         throw AssemblerException::fromException($e);
     }
 }
Beispiel #5
0
 /**
  * @param ContextInterface|TypeContext $context
  */
 public function assemble(ContextInterface $context)
 {
     $class = $context->getClass();
     try {
         $uses = $class->getUses();
         if (!in_array(Normalizer::getCompleteUseStatement($this->useName, $this->useAlias), $uses) && !in_array($this->useName, $uses)) {
             $class->addUse($this->useName, $this->useAlias);
         }
     } catch (\Exception $e) {
         throw AssemblerException::fromException($e);
     }
 }
 /**
  * @param ContextInterface|PropertyContext $context
  *
  * @throws AssemblerException
  */
 public function assemble(ContextInterface $context)
 {
     $class = $context->getClass();
     $property = $context->getProperty();
     try {
         // It's not possible to overwrite a property in zend-code yet!
         if ($class->hasProperty($property->getName())) {
             return;
         }
         $class->addPropertyFromGenerator(PropertyGenerator::fromArray(['name' => $property->getName(), 'visibility' => PropertyGenerator::VISIBILITY_PROTECTED, 'docblock' => DocBlockGenerator::fromArray(['tags' => [['name' => 'var', 'description' => $property->getType()]]])]));
     } catch (\Exception $e) {
         throw AssemblerException::fromException($e);
     }
 }
Beispiel #7
0
 /**
  * @param ContextInterface|TypeContext $context
  */
 public function assemble(ContextInterface $context)
 {
     $class = $context->getClass();
     try {
         $useAssembler = new UseAssembler($this->traitName, $this->traitAlias);
         if ($useAssembler->canAssemble($context)) {
             $useAssembler->assemble($context);
         }
         $traitAlias = $this->traitAlias ?: Normalizer::getClassNameFromFQN($this->traitName);
         $class->addTrait($traitAlias);
     } catch (\Exception $e) {
         throw AssemblerException::fromException($e);
     }
 }
 /**
  * @param ClassMapContext|ContextInterface $context
  *
  * @throws \Phpro\SoapClient\Exception\AssemblerException
  */
 public function assemble(ContextInterface $context)
 {
     $file = $context->getFile();
     $typeMap = $context->getTypeMap();
     try {
         $file->setUse(ClassMapCollection::class);
         $file->setUse(ClassMap::class);
         $linefeed = $file::LINE_FEED;
         $classMap = $this->assembleClassMap($typeMap, $linefeed, $file->getIndentation());
         $code = $this->assembleClassMapCollection($classMap, $linefeed) . $linefeed;
         $file->setBody($code);
     } catch (\Exception $e) {
         throw AssemblerException::fromException($e);
     }
 }
 /**
  * @param ContextInterface|TypeContext $context
  *
  * @throws AssemblerException
  */
 public function assemble(ContextInterface $context)
 {
     $class = $context->getClass();
     $properties = $context->getType()->getProperties();
     $firstProperty = count($properties) ? current($properties) : null;
     try {
         $interfaceAssembler = new InterfaceAssembler(\IteratorAggregate::class);
         if ($interfaceAssembler->canAssemble($context)) {
             $interfaceAssembler->assemble($context);
         }
         if ($firstProperty) {
             $this->implementGetIterator($class, $firstProperty);
         }
     } catch (\Exception $e) {
         throw AssemblerException::fromException($e);
     }
 }
 /**
  * @param ContextInterface|TypeContext $context
  */
 public function assemble(ContextInterface $context)
 {
     $class = $context->getClass();
     $interface = $this->interfaceName;
     try {
         $useAssembler = new UseAssembler($interface);
         if ($useAssembler->canAssemble($context)) {
             $useAssembler->assemble($context);
         }
         $interfaces = $class->getImplementedInterfaces();
         if (!in_array($interface, $interfaces)) {
             $interfaces[] = $interface;
             $class->setImplementedInterfaces($interfaces);
         }
     } catch (\Exception $e) {
         throw AssemblerException::fromException($e);
     }
 }
 /**
  * @param ContextInterface|TypeContext $context
  */
 public function assemble(ContextInterface $context)
 {
     $class = $context->getClass();
     $class->setFinal(true);
 }