By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
435,131 Members | 1,425 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 435,131 IT Pros & Developers. It's quick & easy.

Error creating WSDL: no class found with the name 'array'

P: 1
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.class.php

Expand|Select|Wrap|Line Numbers
  1. <?php
  2. /**
  3.  * WebServices Handler
  4.  *
  5.  * This class will be used in the SOAP Server.
  6.  * To use all the available options on the SOAP Server we need to use
  7.  * a WSDL file.
  8.  *
  9.  * @author 
  10.  * @version 
  11.  * @package 
  12.  */
  13.  
  14. /**
  15.  * Classes needed to web service
  16.  */
  17. include_once("DB.class.php");
  18. include_once("Maquinas.class.php");
  19.  
  20. /**
  21.  * ipTicketWS class
  22.  *
  23.  * This class has all methods to use on web service
  24.  * @package 
  25.  */
  26. class ipTicketWS extends dbHandler
  27. {
  28.     /**
  29.      * Set Maquinas info
  30.      *
  31.      * Function to get Maquinas info
  32.      * @param Integer $idmaquina maquinaID
  33.      * @return array of objects
  34.      */
  35.     public function getMaquinas($idmaquina)
  36.     {
  37.             $res = new Maquina(array("db" => $this->__dbinfo));
  38.             return $res->getMaquinas($idmaquina);
  39.     }
  40.  
  41.  
  42. }
  43.  
  44. ?>
Expand|Select|Wrap|Line Numbers
  1. <?php
  2.  
  3. include_once ("DB.class.php");
  4.  
  5. class Maquina extends dbHandler
  6. {
  7.     /** @var integer */
  8.     var $res;
  9.     var $tmp;
  10.     public $idmaquina;
  11.  
  12.     public function __construct($__dbinfo, $idmaquina)
  13.     {
  14.         parent::__construct($__dbinfo);
  15.         $this->idatributo = $idmaquina;
  16.     }
  17.  
  18.  
  19. public function getMaquinas($idmaquina) 
  20.     {
  21.     $query = "select * from maquinas order by idmaquina";
  22.     $tmp = $this->dbHandlerquery($query);
  23.         return $tmp;
  24.     }
  25. }
  26. ?>
DB.class.php

Expand|Select|Wrap|Line Numbers
  1. <?php
  2.  
  3. /**
  4.  * Database Handler Class
  5.  * HVasconcelos
  6.  */
  7.  
  8. /**
  9.  * Class to handle all database communications
  10.  * @package dbHandler
  11.  */
  12. class dbHandler
  13. {
  14.   /**
  15.    * Database Information
  16.    * @access public
  17.    * @var array
  18.    */
  19.   public $__dbinfo = array ();
  20.  
  21.   /** 
  22.    * Debug Status
  23.    * @var boolean
  24.    */
  25.   public $__debugStatus = false;
  26.  
  27.   /** 
  28.    * Logfile for Debug
  29.    * @var string
  30.    */
  31.   public $__logfilename = "";
  32.  
  33.   /**
  34.    * Handles DB open connection
  35.    *
  36.    * Options format:
  37.    * <code>
  38.    * $opts = array {
  39.    *   "db" => array {
  40.    *                  "conn" => resource,
  41.      *                  "type"   => 'POSTGRES', // MYSQL | ORACLE | POSTGRES
  42.    *   },
  43.    *   "debug" => true, // true|false
  44.    *   "logfile" => '/tmp/dblog.log'
  45.    * }
  46.    * </code>
  47.    *
  48.    * @access public
  49.    * @param array $opts
  50.    * @return int
  51.    */
  52.   public function __construct ( $opts = array () )
  53.   {
  54.     $this->__dbinfo['connected'] = ( ( $opts['db']['conn'] ) ? true : false );
  55.         $this->__dbinfo['conn'] = $opts['db']['conn'];
  56.  
  57.     $this->__debugStatus = ( ( $opts['debug'] === true ) ? true : false );
  58.     $this->__logfilename = ( ( strlen ( $opts['logfile'] ) ) ? $opts['logfile'] : "" );
  59.  
  60.     switch ( $opts['db']['type'] )
  61.       {
  62.       case 'MYSQL':
  63.         $this->__dbinfo['type'] = 'MYSQL';
  64.         break;
  65.       case 'ORACLE':
  66.         $this->__dbinfo['type'] = 'ORACLE';
  67.         break;
  68.       case 'POSTGRES':
  69.         $this->__dbinfo['type'] = 'POSTGRES';
  70.         break;
  71.       default:
  72.         $this->__dbinfo['type'] = 'POSTGRES';
  73.         break;
  74.       }
  75.  
  76.     return $this->__dbinfo['connected'];
  77.   }
  78.  
  79.   /**
  80.    * Parse DB results
  81.    * @access private
  82.    * @param object resource
  83.    * @return array of objects
  84.    */
  85.   private function parseDBResults ( $res )
  86.   {
  87.     if (! $res ) {
  88.       return false;
  89.     }
  90.  
  91.     if ( $this->__dbinfo['type'] == 'MYSQL' ) {
  92.       // ...
  93.     } else if ( $this->__dbinfo['type'] == 'ORACLE' ) {
  94.  
  95.       $i = 0;
  96.       while ( $row = @oci_fetch_object ( $res ) ) {
  97.         foreach ( $row as $key => $value)
  98.         {
  99.             $row_object->{strtolower($key)} = $value;
  100.         }
  101.         $results[$i++] = $row_object;
  102.       }
  103.  
  104.     } else if ( $this->__dbinfo['type'] == 'POSTGRES' ) {
  105.  
  106.       $count = @pg_num_rows( $res );
  107.       $results = array ();
  108.       for ( $i = 0; $i < $count; $i++ ) {
  109.         $results[$i] = @pg_fetch_object ( $res, $i );
  110.       }
  111.     }
  112.  
  113.     return $results;
  114.   }
  115.  
  116.   /**
  117.    * Secure user data for SQL statements
  118.    * @access public
  119.    * @param array $args
  120.    * @return array Filtered arguments
  121.    */
  122.   public function parseDBArrayArgs ( $args )
  123.   {
  124.     $safeArgs = array ();
  125.  
  126.     $count = count ( $args );
  127.     for ( $i = 0; $i < $count; $i++ ) {
  128.       if ( $this->__dbinfo['type'] == 'MYSQL' ) {
  129.         // ...
  130.       } else if ( $this->__dbinfo['type'] == 'ORACLE' ) {
  131.         // ...
  132.       } else if ( $this->__dbinfo['type'] == 'POSTGRES' ) {
  133.         $safeArgs[$i] = @pg_escape_string ( $args[$i] );
  134.       }
  135.     }
  136.  
  137.     return $safeArgs;
  138.   }
  139.  
  140.   /**
  141.    * Secure user data for SQL statements
  142.    * @access public
  143.    * @param string $arg
  144.    * @return string Filtered string
  145.    */
  146.   public function parseDBStringArg ( $arg )
  147.   {
  148.     $safeStr = "";
  149.  
  150.     if ( $this->__dbinfo['type'] == 'MYSQL' ) {
  151.       // ...
  152.     } else if ( $this->__dbinfo['type'] == 'ORACLE' ) {
  153.       // ...
  154.     } else if ( $this->__dbinfo['type'] == 'POSTGRES' ) {
  155.       $safeStr = @pg_escape_string ( $arg );
  156.     }
  157.  
  158.     return $safeStr;
  159.   }
  160.  
  161.   /**
  162.    * Handles DB query (SQL SELECT)
  163.    * @access public
  164.    * @param string $sql
  165.    * @return array Object resource | false
  166.    */
  167.   public function dbHandlerquery ( $sql )
  168.   {
  169.     $res = false;
  170.  
  171.  
  172.     if ( $this->__dbinfo['connected'] === true ) {
  173.  
  174.       $this->__debug ( "(QUERY) " . htmlentities ( $sql ) );
  175.  
  176.       if ( $this->__dbinfo['type'] == 'MYSQL' ) {
  177.  
  178.         // ...
  179.       } else if ( $this->__dbinfo['type'] == 'ORACLE' ) {
  180.  
  181.         $res = @oci_parse ( $this->__dbinfo['conn'], rtrim ( $sql, ';' ) );
  182.         $resource = @oci_execute ( $res );
  183.  
  184.       } else if ( $this->__dbinfo['type'] == 'POSTGRES' ) {
  185.         $res = @pg_query ( $sql );
  186.       }
  187.  
  188.       if (! $res) {
  189.         $this->__debugLastDBError ();
  190.       }
  191.  
  192.     } else {
  193.       $this->__debug ( "There's no database connection..." );
  194.     }
  195.  
  196.     return $this->parseDBResults ( $res );
  197.   }
  198.  
  199.   /**
  200.    * Handles DB execute (SQL UPDATE | INSERT | DELETE )
  201.    * @access public
  202.    * @param string $sql
  203.    * @return array Object resource | false
  204.    */
  205.   public function dbHandlerexecute ( $sql )
  206.   {
  207.     $res = false;
  208.  
  209.     if ( $this->__dbinfo['connected'] === true ) {
  210.  
  211.       $this->__debug ( "(QUERY) " . htmlentities ( $sql ) );
  212.  
  213.       if ( $this->__dbinfo['type'] == 'MYSQL' ) {
  214.         // ...
  215.       } else if ( $this->__dbinfo['type'] == 'ORACLE' ) {
  216.  
  217.         $res = @oci_parse ( $this->__dbinfo['conn'], rtrim ( $sql, ';' ) );
  218.         $resource = @oci_execute ( $res );
  219.  
  220.       } else if ( $this->__dbinfo['type'] == 'POSTGRES' ) {
  221.         $res = @pg_query ( $sql );
  222.       }
  223.  
  224.       if (! $res) {
  225.         $this->__debugLastDBError ();
  226.       }
  227.  
  228.     } else {
  229.       $this->__debug ( "There's no database connection..." );
  230.     }
  231.  
  232.     return $res;
  233.   }
  234.  
  235.   /** 
  236.    * Prints Database Information
  237.    * @access public
  238.    * @param void
  239.    * @return void
  240.    */
  241.   public function __prtDBInfo ( )
  242.   {
  243.     echo "<pre>";
  244.     var_dump ( $this->__dbinfo );
  245.     var_dump ( $this->__debugStatus );
  246.     var_dump ( $this->__logfilename );
  247.     echo "</pre>";
  248.   }
  249.  
  250.   /**
  251.    * Generic Debug Function
  252.    *
  253.    * Inserts timestamp in the debug string.
  254.    * Timestamp format: YYYMMDDHHMMSS
  255.    *
  256.    * @access private
  257.    * @param string $dbgStr
  258.    * @return void
  259.    */
  260.   private function __debug ( $dbgStr )
  261.   {
  262.     if ( $this->__debugStatus === true ) {
  263.       echo "<pre>DBGSTR: $dbgStr</pre>";
  264.       $this->__debug2Logfile ( $dbgStr );
  265.     }
  266.   }
  267.  
  268.   /**
  269.    * Debug Database Communications
  270.    * @access private
  271.    * @param void
  272.    * @return void
  273.    */
  274.   private function __debugLastDBError ( )
  275.   {
  276.     if ( $this->__debugStatus === true ) {
  277.  
  278.       if ( $this->__dbinfo['type'] == 'MYSQL' ) {
  279.         // ...
  280.       } else if ( $this->__dbinfo['type'] == 'ORACLE' ) {
  281.         // ...
  282.       } else if ( $this->__dbinfo['type'] == 'POSTGRES' ) {
  283.         $dbgStr = @pg_last_error ( $this->__dbinfo['conn'] );
  284.         $this->__debug2Logfile ( $dbgStr );
  285.         echo "<pre>DBGSTR: $dbgStr</pre>";
  286.       }
  287.     }
  288.   }
  289.  
  290.   /**
  291.    * Debug Database Communications to Logfilename
  292.    *
  293.    * Inserts timestamp in the debug string.
  294.    * Timestamp format: YYYMMDDHHMMSS
  295.    *
  296.    * @access private
  297.    * @param string $dbgStr
  298.    * @return void
  299.    */
  300.   private function __debug2Logfile ( $dbgStr )
  301.   {
  302.     if ( ( $this->__debugStatus === true ) && ( $this->__logfilename ) ) {
  303.       $tstamp = date ( "YmdHis" );
  304.       @error_log ( $tstamp." - " . $dbgStr . "\n", 3, $this->__logfilename );
  305.     }
  306.   }
  307. }
  308.  
  309. ?>

I think the error is somewhere here but i can't find it. Hope u con help me!

Thanks.
Mar 16 '10 #1
Share this Question
Share on Google+
1 Reply


Atli
Expert 5K+
P: 5,058
Hey.

I can't see any problems in that code. But I don't see anything in there either that would do anything WSDL related. As far as I can tell, all that code just executes a static SQL query when the "ipTicketWS::getMaquinas()" method is called, returning the result set as an array.
Mar 16 '10 #2

Post your reply

Sign in to post your reply or Sign up for a free account.