Hi every one!
I need your help to solve this problems.
I'm trying to creat a wsdl file to a webservice but i'm getting an erros.
"Error creating WSDL document:Error creating WSDL: no class found with the name 'array' / array : , so how should we know the structure for this datatype?"
now i will show u the code and hope someone discover the bug!
webservice.clas s.php
DB.class.php
I think the error is somewhere here but i can't find it. Hope u con help me!
Thanks.
I need your help to solve this problems.
I'm trying to creat a wsdl file to a webservice but i'm getting an erros.
"Error creating WSDL document:Error creating WSDL: no class found with the name 'array' / array : , so how should we know the structure for this datatype?"
now i will show u the code and hope someone discover the bug!
webservice.clas s.php
Code:
<?php
/**
* WebServices Handler
*
* This class will be used in the SOAP Server.
* To use all the available options on the SOAP Server we need to use
* a WSDL file.
*
* @author
* @version
* @package
*/
/**
* Classes needed to web service
*/
include_once("DB.class.php");
include_once("Maquinas.class.php");
/**
* ipTicketWS class
*
* This class has all methods to use on web service
* @package
*/
class ipTicketWS extends dbHandler
{
/**
* Set Maquinas info
*
* Function to get Maquinas info
* @param Integer $idmaquina maquinaID
* @return array of objects
*/
public function getMaquinas($idmaquina)
{
$res = new Maquina(array("db" => $this->__dbinfo));
return $res->getMaquinas($idmaquina);
}
}
?>
Code:
<?php
include_once ("DB.class.php");
class Maquina extends dbHandler
{
/** @var integer */
var $res;
var $tmp;
public $idmaquina;
public function __construct($__dbinfo, $idmaquina)
{
parent::__construct($__dbinfo);
$this->idatributo = $idmaquina;
}
public function getMaquinas($idmaquina)
{
$query = "select * from maquinas order by idmaquina";
$tmp = $this->dbHandlerquery($query);
return $tmp;
}
}
?>
Code:
<?php
/**
* Database Handler Class
* HVasconcelos
*/
/**
* Class to handle all database communications
* @package dbHandler
*/
class dbHandler
{
/**
* Database Information
* @access public
* @var array
*/
public $__dbinfo = array ();
/**
* Debug Status
* @var boolean
*/
public $__debugStatus = false;
/**
* Logfile for Debug
* @var string
*/
public $__logfilename = "";
/**
* Handles DB open connection
*
* Options format:
* <code>
* $opts = array {
* "db" => array {
* "conn" => resource,
* "type" => 'POSTGRES', // MYSQL | ORACLE | POSTGRES
* },
* "debug" => true, // true|false
* "logfile" => '/tmp/dblog.log'
* }
* </code>
*
* @access public
* @param array $opts
* @return int
*/
public function __construct ( $opts = array () )
{
$this->__dbinfo['connected'] = ( ( $opts['db']['conn'] ) ? true : false );
$this->__dbinfo['conn'] = $opts['db']['conn'];
$this->__debugStatus = ( ( $opts['debug'] === true ) ? true : false );
$this->__logfilename = ( ( strlen ( $opts['logfile'] ) ) ? $opts['logfile'] : "" );
switch ( $opts['db']['type'] )
{
case 'MYSQL':
$this->__dbinfo['type'] = 'MYSQL';
break;
case 'ORACLE':
$this->__dbinfo['type'] = 'ORACLE';
break;
case 'POSTGRES':
$this->__dbinfo['type'] = 'POSTGRES';
break;
default:
$this->__dbinfo['type'] = 'POSTGRES';
break;
}
return $this->__dbinfo['connected'];
}
/**
* Parse DB results
* @access private
* @param object resource
* @return array of objects
*/
private function parseDBResults ( $res )
{
if (! $res ) {
return false;
}
if ( $this->__dbinfo['type'] == 'MYSQL' ) {
// ...
} else if ( $this->__dbinfo['type'] == 'ORACLE' ) {
$i = 0;
while ( $row = @oci_fetch_object ( $res ) ) {
foreach ( $row as $key => $value)
{
$row_object->{strtolower($key)} = $value;
}
$results[$i++] = $row_object;
}
} else if ( $this->__dbinfo['type'] == 'POSTGRES' ) {
$count = @pg_num_rows( $res );
$results = array ();
for ( $i = 0; $i < $count; $i++ ) {
$results[$i] = @pg_fetch_object ( $res, $i );
}
}
return $results;
}
/**
* Secure user data for SQL statements
* @access public
* @param array $args
* @return array Filtered arguments
*/
public function parseDBArrayArgs ( $args )
{
$safeArgs = array ();
$count = count ( $args );
for ( $i = 0; $i < $count; $i++ ) {
if ( $this->__dbinfo['type'] == 'MYSQL' ) {
// ...
} else if ( $this->__dbinfo['type'] == 'ORACLE' ) {
// ...
} else if ( $this->__dbinfo['type'] == 'POSTGRES' ) {
$safeArgs[$i] = @pg_escape_string ( $args[$i] );
}
}
return $safeArgs;
}
/**
* Secure user data for SQL statements
* @access public
* @param string $arg
* @return string Filtered string
*/
public function parseDBStringArg ( $arg )
{
$safeStr = "";
if ( $this->__dbinfo['type'] == 'MYSQL' ) {
// ...
} else if ( $this->__dbinfo['type'] == 'ORACLE' ) {
// ...
} else if ( $this->__dbinfo['type'] == 'POSTGRES' ) {
$safeStr = @pg_escape_string ( $arg );
}
return $safeStr;
}
/**
* Handles DB query (SQL SELECT)
* @access public
* @param string $sql
* @return array Object resource | false
*/
public function dbHandlerquery ( $sql )
{
$res = false;
if ( $this->__dbinfo['connected'] === true ) {
$this->__debug ( "(QUERY) " . htmlentities ( $sql ) );
if ( $this->__dbinfo['type'] == 'MYSQL' ) {
// ...
} else if ( $this->__dbinfo['type'] == 'ORACLE' ) {
$res = @oci_parse ( $this->__dbinfo['conn'], rtrim ( $sql, ';' ) );
$resource = @oci_execute ( $res );
} else if ( $this->__dbinfo['type'] == 'POSTGRES' ) {
$res = @pg_query ( $sql );
}
if (! $res) {
$this->__debugLastDBError ();
}
} else {
$this->__debug ( "There's no database connection..." );
}
return $this->parseDBResults ( $res );
}
/**
* Handles DB execute (SQL UPDATE | INSERT | DELETE )
* @access public
* @param string $sql
* @return array Object resource | false
*/
public function dbHandlerexecute ( $sql )
{
$res = false;
if ( $this->__dbinfo['connected'] === true ) {
$this->__debug ( "(QUERY) " . htmlentities ( $sql ) );
if ( $this->__dbinfo['type'] == 'MYSQL' ) {
// ...
} else if ( $this->__dbinfo['type'] == 'ORACLE' ) {
$res = @oci_parse ( $this->__dbinfo['conn'], rtrim ( $sql, ';' ) );
$resource = @oci_execute ( $res );
} else if ( $this->__dbinfo['type'] == 'POSTGRES' ) {
$res = @pg_query ( $sql );
}
if (! $res) {
$this->__debugLastDBError ();
}
} else {
$this->__debug ( "There's no database connection..." );
}
return $res;
}
/**
* Prints Database Information
* @access public
* @param void
* @return void
*/
public function __prtDBInfo ( )
{
echo "<pre>";
var_dump ( $this->__dbinfo );
var_dump ( $this->__debugStatus );
var_dump ( $this->__logfilename );
echo "</pre>";
}
/**
* Generic Debug Function
*
* Inserts timestamp in the debug string.
* Timestamp format: YYYMMDDHHMMSS
*
* @access private
* @param string $dbgStr
* @return void
*/
private function __debug ( $dbgStr )
{
if ( $this->__debugStatus === true ) {
echo "<pre>DBGSTR: $dbgStr</pre>";
$this->__debug2Logfile ( $dbgStr );
}
}
/**
* Debug Database Communications
* @access private
* @param void
* @return void
*/
private function __debugLastDBError ( )
{
if ( $this->__debugStatus === true ) {
if ( $this->__dbinfo['type'] == 'MYSQL' ) {
// ...
} else if ( $this->__dbinfo['type'] == 'ORACLE' ) {
// ...
} else if ( $this->__dbinfo['type'] == 'POSTGRES' ) {
$dbgStr = @pg_last_error ( $this->__dbinfo['conn'] );
$this->__debug2Logfile ( $dbgStr );
echo "<pre>DBGSTR: $dbgStr</pre>";
}
}
}
/**
* Debug Database Communications to Logfilename
*
* Inserts timestamp in the debug string.
* Timestamp format: YYYMMDDHHMMSS
*
* @access private
* @param string $dbgStr
* @return void
*/
private function __debug2Logfile ( $dbgStr )
{
if ( ( $this->__debugStatus === true ) && ( $this->__logfilename ) ) {
$tstamp = date ( "YmdHis" );
@error_log ( $tstamp." - " . $dbgStr . "\n", 3, $this->__logfilename );
}
}
}
?>
I think the error is somewhere here but i can't find it. Hope u con help me!
Thanks.
Comment