Originally created by: johan.sm...@leftclick.eu
I have an complex array structure but the class name is not mapped correctly.
I'm not sure how to apply the PHP class on the WSDL class
====================================================================================================================
class.ShopList.php:
class CustomerClass{
/**
* Retrieve shop list
*
* @param string $CardId is the card identifier string
* @param string $RegisterId is the card identifier string
* @return ShopListArray The results the items in the list
*/
public function RetrieveShopList($CardId,$RegisterId) {
global $DB;
$CardId = $DB->real_escape_string(utf8_decode($CardId));
$Result = new ShopListArray();
$SQL = "some sql";
if($RetrieveShopListResult = $DB->query($SQL)) {
$Counter = 0;
$TotalValue = 0;
while($row = $RetrieveShopListResult->fetch_assoc()) {
$Result->ShopListArray[$Counter] = new ShopList(SOAP_ENC_ARRAY);
$Counter++;
}
return $Result;
} else {
return $DB->error;
}
}
class ShopList{
/**
* A complex type ShopList
*
* @pw_element integer $ProductNumber A integer Product number
* @pw_complex ShopList
*/
public $ProductNumber=1;
}
/**
* A complex type ShopList
*
* @pw_complex ShopListArray Array The complex type name definition
*/
====================================================================================================================
soap.php:
// Include the demonstration classes
require_once('class.ShopList.php');
// Initialize the PhpWsdl class
require_once('class.phpwsdl.php');
$soap=PhpWsdl::CreateInstance(
null, // PhpWsdl will determine a good namespace
null, // Change this to your SOAP endpoint URI (or keep it NULL and PhpWsdl will determine it)
null, // Change this to a folder with write access
Array( // All files with WSDL definitions in comments
'class.ShopList.php',
),
null, // The name of the class that serves the webservice will be determined by PhpWsdl
null, // This demo contains all method definitions in comments
null, // This demo contains all complex types in comments
true, // Don't send WSDL right now
true); // Don't start the SOAP server right now
// Disable caching for demonstration
ini_set('soap.wsdl_cache_enabled',0); // Disable caching in PHP
PhpWsdl::$CacheTime=0; // Disable caching in PhpWsdl
// Run the SOAP server
if($soap->IsWsdlRequested()) // WSDL requested by the client?
$soap->Optimize=false; // Don't optimize WSDL to send it human readable to the browser
//$soap->ParseDocs=false; // Uncomment this line to disable the whole documentation features
//$soap->IncludeDocs=false; // Uncomment this line to disable writing the documentation in WSDL XML
//$wsdl=$soap->CreateWsdl(); // This would save the WSDL XML string in $wsdl
//$php=$soap->OutputPhp(false,false); // This would save a PHP SOAP client as PHP source code string in $php
//$html=$soap->OutputHtml(false,false); // This would save the HTML documentation string in $html
$soap->RunServer(); // Finally, run the server
$DB->close();
====================================================================================================================
I have the same issue as http://yetanotherprogrammingblog.com/node/11 but don't know how to define/solve in phpwsdl class.
View and moderate all "tickets Discussion" comments posted by this user
Mark all as spam, and block user from posting to "Tickets"
Originally posted by: johan.sm...@leftclick.eu
It was not an bug, it was a human error.
The problem was solved by when defining a cache directory.