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

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • xuki
    New Member
    • Mar 2010
    • 1

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

    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

    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;
    	}
    }
    ?>
    DB.class.php

    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.
    Last edited by Dormilich; Mar 16 '10, 01:14 PM. Reason: Please use [code] tags when posting code
  • Atli
    Recognized Expert Expert
    • Nov 2006
    • 5062

    #2
    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::ge tMaquinas()" method is called, returning the result set as an array.

    Comment

    Working...