public function testCompositeDelegatesAddingComplexTypesToSubStrategies() { $strategy = new Zend_Soap_Wsdl_Strategy_Composite(array(), "Zend_Soap_Wsdl_Strategy_AnyType"); $strategy->connectTypeToStrategy("Zend_Soap_Wsdl_Book", "Zend_Soap_Wsdl_Strategy_ArrayOfTypeComplex"); $strategy->connectTypeToStrategy("Zend_Soap_Wsdl_Cookie", "Zend_Soap_Wsdl_Strategy_DefaultComplexType"); $wsdl = new Zend_Soap_Wsdl("SomeService", "http://example.com"); $strategy->setContext($wsdl); $this->assertEquals("tns:Zend_Soap_Wsdl_Book", $strategy->addComplexType("Zend_Soap_Wsdl_Book")); $this->assertEquals("tns:Zend_Soap_Wsdl_Cookie", $strategy->addComplexType("Zend_Soap_Wsdl_Cookie")); $this->assertEquals("xsd:anyType", $strategy->addComplexType("Zend_Soap_Wsdl_Anything")); }
public function autodiscoverWsdlDocument($wsClassName = null, $log = FALSE) { $wsClassName = self::generateWSClassName($wsClassName); $wsdlStrategy = new Zend_Soap_Wsdl_Strategy_Composite(); $wsdlStrategy->connectTypeToStrategy('Logic_WebService_Object_Bonus[]', Zend_Soap_Wsdl_Strategy_ArrayOfTypeComplex); $wsdlStrategy->connectTypeToStrategy('Logic_WebService_Object_DepositData[]', Zend_Soap_Wsdl_Strategy_ArrayOfTypeComplex); $wsdlStrategy->connectTypeToStrategy('Logic_WebService_Handler_Response_Step[]', Zend_Soap_Wsdl_Strategy_ArrayOfTypeComplex); $wsdlStrategy->connectTypeToStrategy('Logic_WebService_Handler_Response_Option[]', Zend_Soap_Wsdl_Strategy_ArrayOfTypeComplex); $wsdlStrategy->connectTypeToStrategy('Logic_WebService_Object_DepositDuration[]', Zend_Soap_Wsdl_Strategy_ArrayOfTypeComplex); //$wsdlStrategy->connectTypeToStrategy('Logic_WebService_Handler_Response_Option', Zend_Soap_Wsdl_Strategy_AnyType); $wsdlStrategy->connectTypeToStrategy('float[]', Zend_Soap_Wsdl_Strategy_ArrayOfTypeSequence); $wsdlStrategy->connectTypeToStrategy('string[]', Zend_Soap_Wsdl_Strategy_AnyType); $autodisc = new Zend_Soap_AutoDiscover($wsdlStrategy); $autodisc->setClass($wsClassName); $autodisc->dump(APPLICATION_PATH . '/../tmp/' . $wsClassName . '.tmp'); if (!is_readable(APPLICATION_PATH . '/../tmp/' . $wsClassName . '.tmp')) { throw new SoapFault('No "/../tmp/' . $wsClassName . '.tmp" or fail is unreadable', '007'); } $return = file_get_contents(APPLICATION_PATH . '/../tmp/' . $wsClassName . '.tmp'); if ($return === false && $log) { throw new SoapFault('Error during reading of WSDL, fail: "/../tmp/' . $wsClassName . '.tmp"', '008'); } return $return; }