Example #1
0
 /**
  * Transform an array to a class element object
  *
  * @param array $definition Class definitoion
  *
  * @return Deflection\Element\Classes
  */
 public function arrayToClassElement($definition)
 {
     $class = new Classes();
     if (isset($definition['docblock'])) {
         $docblock = $this->arrayToDocblockElement($definition['docblock']);
         $class->setDocbloc($docblock);
     }
     if (isset($definition['namespace'])) {
         $class->setNamespace($definition['namespace']);
     }
     if (isset($definition['name'])) {
         $class->setName($definition['name']);
     }
     if (isset($definition['extends'])) {
         $class->setExtends($definition['extends']);
     }
     if (isset($definition['implements'])) {
         foreach ($definition['implements'] as $interface) {
             $class->addImplements($interface);
         }
     }
     if (isset($definition['uses'])) {
         foreach ($definition['uses'] as $alias => $use) {
             $alias = is_string($alias) ? $alias : null;
             $class->addUse($use, $alias);
         }
     }
     if (isset($definition['functions'])) {
         foreach ($definition['functions'] as $definition) {
             $function = $this->arrayToFunctionElement($definition);
             $class->addFunction($function);
         }
     }
     return $class;
 }
Example #2
0
 /**
  * Generate service class from definition
  *
  * @param array  $definition Class definition
  * @param string $service    Service name
  *
  * @return array
  */
 protected function getServiceClassesFromDefinitions(array $definition, $service)
 {
     $classes = array();
     $namespace = $this->getNamespace();
     $name = ucfirst($service);
     $class = new Classes();
     $class->setName($name);
     $class->setNamespace($namespace);
     $class->setDocblock($this->getDocBlock('Proxy for ' . $name . ' service'));
     $class->setExtends('\\SoapClient');
     if ($this->hasOverwrite()) {
         $parent = new Classes();
         $parent->setName($name);
         $parent->setNamespace($namespace . '\\Base');
         $parent->setDocblock($this->getDocBlock('Parent model for proxy for ' . $name . ' service'));
         $parent->setExtends('\\SoapClient');
         $parent->isAbstract(true);
         $classes[] = $parent;
         $class->addUse('\\' . $namespace . '\\Base\\' . $name, $name . 'Base');
         $class->setExtends($name . 'Base');
         $this->addParamsForService($parent);
         $this->addConstructForService($parent);
         $this->addServicesFromDefinition($parent, $definition, false);
         $this->addServicesFromDefinition($class, $definition, true);
     } else {
         $this->addParamsForService($class);
         $this->addConstructForService($class);
         $this->addServicesFromDefinition($class, $definition);
     }
     $classes[] = $class;
     return $classes;
 }