public function execute()
 {
     $soapClient = @new SoapClient($this->wsdlPath, array('cache_wsdl' => WSDL_CACHE_NONE));
     $operations = $soapClient->__getFunctions();
     $functions = array();
     foreach ($operations as $operation) {
         $matches = array();
         $return = '';
         $call = '';
         $params = '';
         if (preg_match('/^(\\w[\\w\\d_]*) (\\w[\\w\\d_]*)\\(([\\w\\$\\d,_ ]*)\\)$/', $operation, $matches)) {
             $return = $matches[1];
             $call = $matches[2];
             $params = $matches[3];
         } else {
             if (preg_match('/^(list\\([\\w\\$\\d,_ ]*\\)) (\\w[\\w\\d_]*)\\(([\\w\\$\\d,_ ]*)\\)$/', $operation, $matches)) {
                 $return = $matches[1];
                 $call = $matches[2];
                 $params = $matches[3];
             }
         }
         $tmpClass = ProxyGeneratorAbstract::getClass($return);
         if ($tmpClass != null) {
             $fullClassName = $tmpClass['namespace'] . '\\' . $tmpClass['class'];
             if (!in_array($fullClassName, $this->useBlock)) {
                 $this->useBlock[] = $fullClassName;
             }
         }
         $params = explode(', ', $params);
         $paramsArr = array();
         foreach ($params as $param) {
             $tmp = explode(' ', $param);
             if (count($tmp) > 1) {
                 $tmpClass = ProxyGeneratorAbstract::getClass($tmp[0]);
                 if ($tmpClass != null) {
                     $fullClassName = $tmpClass['namespace'] . '\\' . $tmpClass['class'];
                     if (!in_array($fullClassName, $this->useBlock)) {
                         $this->useBlock[] = $fullClassName;
                     }
                 }
             }
             $paramsArr[] = $tmp;
         }
         $functions[$call] = array('name' => $call, 'return' => $return, 'params' => $paramsArr);
     }
     $soapServiceName = 'SoapService';
     $template = new SoapServiceTemplate($this->namespace, $soapServiceName, $this->useBlock, 'Soap Service', self::$license);
     $template->setClassMaps(self::$classMaps);
     $template->setFunctions($functions);
     $this->saveCode($this->exportPath, $soapServiceName, $template->generateCode());
 }
    protected function generateGettersAndSettersBlock()
    {
        $result = '';
        if (!empty($this->attributes)) {
            foreach ($this->attributes as $attribute) {
                $result .= <<<TEXT
    /**

TEXT;
                $isArray = false;
                $typeHint = null;
                if ($attribute['maxOccurs'] > 1 || $attribute['maxOccurs'] == 'unbounded') {
                    $isArray = true;
                }
                if (in_array($attribute['type'], self::getDataTypes())) {
                    $type = self::convertDataType($attribute['type']);
                } else {
                    $tmpClass = ProxyGeneratorAbstract::getClass($attribute['type']);
                    if ($tmpClass != null && $this->namespace != $tmpClass['namespace']) {
                        $type = 'SimpleType\\' . $tmpClass['class'];
                    } else {
                        $type = $attribute['type'];
                    }
                    $typeHint = $type . ' ';
                }
                if ($isArray) {
                    $type .= '[]';
                    $typeHint = 'array ';
                }
                $nullable = '';
                if (isset($attribute['minOccurs'])) {
                    if ($attribute['minOccurs'] === 0) {
                        if (!$isArray) {
                            $type .= '|null';
                            if ($typeHint !== null) {
                                $nullable = ' = null';
                            }
                        } else {
                            if ($typeHint !== null) {
                                $nullable = ' = array()';
                            }
                        }
                    }
                }
                $functionName = ucfirst($attribute['name']);
                $parameterName = lcfirst($attribute['name']);
                $result .= <<<TEXT
     * @param {$type} \${$parameterName}
     * @return {$this->className}
     */
    public function set{$functionName}({$typeHint}\${$parameterName}{$nullable})
    {
        \$this->{$attribute['name']} = \${$parameterName};

        return \$this;
    }

    /**
     * @return {$type}
     */
    public function get{$functionName}()
    {
        return \$this->{$attribute['name']};
    }


TEXT;
            }
        }
        return $result;
    }