/** * Create the part WSDL * * @param PhpWsdl $pw The PhpWsdl object * @return string The WSDL */ public function CreatePart($pw) { PhpWsdl::Debug('Create WSDL definition for parameter part ' . $this->Name); $res = '<wsdl:part name="' . $this->Name . '" type="'; $res .= PhpWsdl::TranslateType($this->Type) . '"'; if ($pw->IncludeDocs && !$pw->Optimize && !is_null($this->Docs)) { $res .= '>' . "\n"; $res .= '<s:documentation><![CDATA[' . $this->Docs . ']]></s:documentation>' . "\n"; $res .= '</wsdl:part>'; } else { $res .= ' />'; } return $res; }
/** * Create the WSDL * * @param PhpWsdl $pw The PhpWsdl object * @return string The WSDL */ public function CreateElement($pw) { PhpWsdl::Debug('Create WSDL definition for element ' . $this->Name); $res = '<s:element minOccurs="' . $this->MinOccurs . '" maxOccurs="' . $this->MaxOccurs . '" nillable="' . ($this->NillAble ? 'true' : 'false') . '" name="' . $this->Name . '" type="'; $res .= PhpWsdl::TranslateType($this->Type) . '"'; if ($pw->IncludeDocs && !$pw->Optimize && !is_null($this->Docs)) { $res .= '>' . "\n"; $res .= '<s:annotation>' . "\n"; $res .= '<s:documentation><![CDATA[' . $this->Docs . ']]></s:documentation>' . "\n"; $res .= '</s:annotation>' . "\n"; $res .= '</s:element>'; } else { $res .= ' />'; } return $res; }
/** * Create WSDL for the type * * @param PhpWsdl $pw The PhpWsdl object * @return string The WSDL */ public function CreateType($pw) { PhpWsdl::Debug('Create WSDL definition for enumeration ' . $this->Name . ' as ' . $this->Type); $res = array(); $res[] = '<s:simpleType name="' . $this->Name . '">'; if ($pw->IncludeDocs && !$pw->Optimize && !is_null($this->Docs)) { $res[] = '<s:annotation>'; $res[] = '<s:documentation><![CDATA[' . $this->Docs . ']]></s:documentation>'; $res[] = '</s:annotation>'; } $res[] = '<s:restriction base="' . PhpWsdl::TranslateType($this->Type) . '">'; $i = -1; $len = sizeof($this->Elements); while (++$i < $len) { $temp = explode('=', $this->Elements[$i], 2); //TODO Is there really no common way to provide a label for an integer value f.e.? $res[] = '<s:enumeration value="' . self::EncodeXmlAttribute($temp[0]) . '" />'; } $res[] = '</s:restriction>'; $res[] = '</s:simpleType>'; return implode('', $res); }
/** * Create WSDL for the type * * @param PhpWsdl $pw The PhpWsdl object * @return string The WSDL */ public function CreateType($pw) { $res = array(); $res[] = '<s:complexType name="' . $this->Name . '">'; if ($pw->IncludeDocs && !$pw->Optimize && !is_null($this->Docs)) { $res[] = '<s:annotation>'; $res[] = '<s:documentation><![CDATA[' . $this->Docs . ']]></s:documentation>'; $res[] = '</s:annotation>'; } if (!$this->IsArray) { PhpWsdl::Debug('Create WSDL definition for type ' . $this->Name . ' as type'); if (is_null($this->Inherit)) { $res[] = '<s:sequence>'; $i = -1; $len = sizeof($this->Elements); while (++$i < $len) { $res[] = $this->Elements[$i]->CreateElement($pw); } $res[] = '</s:sequence>'; } else { PhpWsdl::Debug('Inherit from "' . $this->Inherit . '"'); $res[] = '<s:complexContent>'; $res[] = '<s:extension base="tns:' . $this->Inherit . '">'; $res[] = '<s:sequence>'; $i = -1; $len = sizeof($this->Elements); while (++$i < $len) { $res[] = $this->Elements[$i]->CreateElement($pw); } $res[] = '</s:sequence>'; $res[] = '</s:extension>'; $res[] = '</s:complexContent>'; } } else { PhpWsdl::Debug('Create WSDL definition for type ' . $this->Name . ' as array'); $res[] = '<s:complexContent>'; $res[] = '<s:restriction base="soapenc:Array">'; $res[] = '<s:attribute ref="soapenc:arrayType" wsdl:arrayType="' . PhpWsdl::TranslateType($this->Type) . '[]" />'; $res[] = '</s:restriction>'; $res[] = '</s:complexContent>'; } $res[] = '</s:complexType>'; return implode('', $res); }