You are here

function XMLSchema::getTypeDef in Salesforce Suite 5

Same name in this branch
  1. 5 includes/nusoap.php \XMLSchema::getTypeDef()
  2. 5 includes/nusoap.orig.php \XMLSchema::getTypeDef()
Same name and namespace in other branches
  1. 5.2 includes/nusoap.php \XMLSchema::getTypeDef()
  2. 5.2 includes/nusoap.orig.php \XMLSchema::getTypeDef()

returns an associative array of information about a given type returns false if no type exists by the given name

* For a complexType typeDef = array( * 'restrictionBase' => '', * 'phpType' => '', * 'compositor' => '(sequence|all)', * 'elements' => array(), // refs to elements array * 'attrs' => array() // refs to attributes array * ... and so on (see addComplexType) * ) * * For simpleType or element, the array has different keys.

@access public

Parameters

string:

Return value

mixed

See also

addComplexType

addSimpleType

addElement

4 calls to XMLSchema::getTypeDef()
XMLSchema::serializeTypeDef in includes/nusoap.php
returns a sample serialization of a given type, or false if no type by the given name
XMLSchema::serializeTypeDef in includes/nusoap.orig.php
returns a sample serialization of a given type, or false if no type by the given name
XMLSchema::typeToForm in includes/nusoap.php
returns HTML form elements that allow a user to enter values for creating an instance of the given type.
XMLSchema::typeToForm in includes/nusoap.orig.php
returns HTML form elements that allow a user to enter values for creating an instance of the given type.

File

includes/nusoap.php, line 1652

Class

XMLSchema
parses an XML Schema, allows access to it's data, other utility methods no validation... yet. very experimental and limited. As is discussed on XML-DEV, I'm one of the people that just doesn't have time to read the spec(s) thoroughly,…

Code

function getTypeDef($type) {

  //$this->debug("in getTypeDef for type $type");
  if (isset($this->complexTypes[$type])) {
    $this
      ->xdebug("in getTypeDef, found complexType {$type}");
    return $this->complexTypes[$type];
  }
  elseif (isset($this->simpleTypes[$type])) {
    $this
      ->xdebug("in getTypeDef, found simpleType {$type}");
    if (!isset($this->simpleTypes[$type]['phpType'])) {

      // get info for type to tack onto the simple type
      // TODO: can this ever really apply (i.e. what is a simpleType really?)
      $uqType = substr($this->simpleTypes[$type]['type'], strrpos($this->simpleTypes[$type]['type'], ':') + 1);
      $ns = substr($this->simpleTypes[$type]['type'], 0, strrpos($this->simpleTypes[$type]['type'], ':'));
      $etype = $this
        ->getTypeDef($uqType);
      if ($etype) {
        $this
          ->xdebug("in getTypeDef, found type for simpleType {$type}:");
        $this
          ->xdebug($this
          ->varDump($etype));
        if (isset($etype['phpType'])) {
          $this->simpleTypes[$type]['phpType'] = $etype['phpType'];
        }
        if (isset($etype['elements'])) {
          $this->simpleTypes[$type]['elements'] = $etype['elements'];
        }
      }
    }
    return $this->simpleTypes[$type];
  }
  elseif (isset($this->elements[$type])) {
    $this
      ->xdebug("in getTypeDef, found element {$type}");
    if (!isset($this->elements[$type]['phpType'])) {

      // get info for type to tack onto the element
      $uqType = substr($this->elements[$type]['type'], strrpos($this->elements[$type]['type'], ':') + 1);
      $ns = substr($this->elements[$type]['type'], 0, strrpos($this->elements[$type]['type'], ':'));
      $etype = $this
        ->getTypeDef($uqType);
      if ($etype) {
        $this
          ->xdebug("in getTypeDef, found type for element {$type}:");
        $this
          ->xdebug($this
          ->varDump($etype));
        if (isset($etype['phpType'])) {
          $this->elements[$type]['phpType'] = $etype['phpType'];
        }
        if (isset($etype['elements'])) {
          $this->elements[$type]['elements'] = $etype['elements'];
        }
      }
      elseif ($ns == 'http://www.w3.org/2001/XMLSchema') {
        $this
          ->xdebug("in getTypeDef, element {$type} is an XSD type");
        $this->elements[$type]['phpType'] = 'scalar';
      }
    }
    return $this->elements[$type];
  }
  elseif (isset($this->attributes[$type])) {
    $this
      ->xdebug("in getTypeDef, found attribute {$type}");
    return $this->attributes[$type];
  }
  elseif (ereg('_ContainedType$', $type)) {
    $this
      ->xdebug("in getTypeDef, have an untyped element {$type}");
    $typeDef['typeClass'] = 'simpleType';
    $typeDef['phpType'] = 'scalar';
    $typeDef['type'] = 'http://www.w3.org/2001/XMLSchema:string';
    return $typeDef;
  }
  $this
    ->xdebug("in getTypeDef, did not find {$type}");
  return false;
}