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; }