protected function loadTypes()
    {
        $this->log('Loading types');

        $types = $this->wsdl->getTypes();

        foreach ($types as $typeNode) {
            $type = null;

            if ($typeNode->isComplex()) {
                if ($typeNode->isArray()) {
                    $type = new ArrayType($this->config, $typeNode->getName());
                } else {
                    $type = new ComplexType($this->config, $typeNode->getName());
                }

                $this->log('Loading type ' . $type->getPhpIdentifier());

                $type->setAbstract($typeNode->isAbstract());

                foreach ($typeNode->getParts() as $name => $typeName) {
                    // There are 2 ways a wsdl can indicate that a field accepts the null value -
                    // by setting the "nillable" attribute to "true" or by setting the "minOccurs" attribute to "0".
                    // See http://www.ibm.com/developerworks/webservices/library/ws-tip-null/index.html
                    $nullable = $typeNode->isElementNillable($name) || $typeNode->getElementMinOccurs($name) === 0;
                    $type->addMember($typeName, $name, $nullable);
                }
            } elseif ($enumValues = $typeNode->getEnumerations()) {
                $type = new Enum($this->config, $typeNode->getName(), $typeNode->getRestriction());
                array_walk($enumValues, function ($value) use ($type) {
                      $type->addValue($value);
                });
            } elseif ($pattern = $typeNode->getPattern()) {
                $type = new Pattern($this->config, $typeNode->getName(), $typeNode->getRestriction());
                $type->setValue($pattern);
            }

            if ($type != null) {
                $already_registered = false;
                if ($this->config->get('sharedTypes')) {
                    foreach ($this->types as $registered_types) {
                        if ($registered_types->getIdentifier() == $type->getIdentifier()) {
                            $already_registered = true;
                            break;
                        }
                    }
                }
                if (!$already_registered) {
                    $this->types[$typeNode->getName()] = $type;
                }
            }
        }

        // Loop through all types again to setup class inheritance.
        // We can only do this once all types have been loaded. Otherwise we risk referencing types which have not been
        // loaded yet.
        foreach ($types as $type) {
            if (($baseType = $type->getBase()) && isset($this->types[$baseType]) && $this->types[$baseType] instanceof ComplexType) {
                $this->types[$type->getName()]->setBaseType($this->types[$baseType]);
            }
        }

        $this->log('Done loading types');
    }
protected function loadTypes()
    {
        $this->log('Loading types');

        $types = $this->wsdl->getTypes();

        foreach ($types as $typeNode) {
            $type = null;

            if ($typeNode->isComplex()) {
                if ($typeNode->isArray()) {
                    $type = new ArrayType($this->config, $typeNode->getName());
                } else {
                    $type = new ComplexType($this->config, $typeNode->getName());
                }

                $this->log('Loading type ' . $type->getPhpIdentifier());

                $type->setAbstract($typeNode->isAbstract());

                foreach ($typeNode->getParts() as $name => $typeName) {
                    // There are 2 ways a wsdl can indicate that a field accepts the null value -
                    // by setting the "nillable" attribute to "true" or by setting the "minOccurs" attribute to "0".
                    // See http://www.ibm.com/developerworks/webservices/library/ws-tip-null/index.html
                    $nullable = $typeNode->isElementNillable($name) || $typeNode->getElementMinOccurs($name) === 0;
                    $type->addMember($typeName, $name, $nullable);
                }
            } elseif ($enumValues = $typeNode->getEnumerations()) {
                $type = new Enum($this->config, $typeNode->getName(), $typeNode->getRestriction());
                array_walk($enumValues, function ($value) use ($type) {
                      $type->addValue($value);
                });
            } elseif ($pattern = $typeNode->getPattern()) {
                $type = new Pattern($this->config, $typeNode->getName(), $typeNode->getRestriction());
                $type->setValue($pattern);
            }

            if ($type != null) {
                $already_registered = false;
                if ($this->config->get('sharedTypes')) {
                    foreach ($this->types as $registered_types) {
                        if ($registered_types->getIdentifier() == $type->getIdentifier()) {
                            $already_registered = true;
                            break;
                        }
                    }
                }
                if (!$already_registered) {
                    $this->types[$typeNode->getName()] = $type;
                }
            }
        }

        // Loop through all types again to setup class inheritance.
        // We can only do this once all types have been loaded. Otherwise we risk referencing types which have not been
        // loaded yet.
        foreach ($types as $type) {
            if (($baseType = $type->getBase()) && isset($this->types[$baseType]) && $this->types[$baseType] instanceof ComplexType) {
                $this->types[$type->getName()]->setBaseType($this->types[$baseType]);
            }
        }

        $this->log('Done loading types');
    }
protected function loadTypes ( ) { $ this -> log ( 'Loading types' ) ; $ types = $ this -> wsdl -> getTypes ( ) ; foreach ( $ types as $ typeNode ) { $ type = null ; if ( $ typeNode -> isComplex ( ) ) { if ( $ typeNode -> isArray ( ) ) { $ type = new ArrayType ( $ this -> config , $ typeNode -> getName ( ) ) ; } else { $ type = new ComplexType ( $ this -> config , $ typeNode -> getName ( ) ) ; } $ this -> log ( 'Loading type ' . $ type -> getPhpIdentifier ( ) ) ; $ type -> setAbstract ( $ typeNode -> isAbstract ( ) ) ; foreach ( $ typeNode -> getParts ( ) as $ name => $ typeName ) { // There are 2 ways a wsdl can indicate that a field accepts the null value - // by setting the "nillable" attribute to "true" or by setting the "minOccurs" attribute to "0". // See http://www.ibm.com/developerworks/webservices/library/ws-tip-null/index.html $ nullable = $ typeNode -> isElementNillable ( $ name ) || $ typeNode -> getElementMinOccurs ( $ name ) === 0 ; $ type -> addMember ( $ typeName , $ name , $ nullable ) ; } } elseif ( $ enumValues = $ typeNode -> getEnumerations ( ) ) { $ type = new Enum ( $ this -> config , $ typeNode -> getName ( ) , $ typeNode -> getRestriction ( ) ) ; array_walk ( $ enumValues , function ( $ value ) use ( $ type ) { $ type -> addValue ( $ value ) ; } ) ; } elseif ( $ pattern = $ typeNode -> getPattern ( ) ) { $ type = new Pattern ( $ this -> config , $ typeNode -> getName ( ) , $ typeNode -> getRestriction ( ) ) ; $ type -> setValue ( $ pattern ) ; } if ( $ type != null ) { $ already_registered = false ; if ( $ this -> config -> get ( 'sharedTypes' ) ) { foreach ( $ this -> types as $ registered_types ) { if ( $ registered_types -> getIdentifier ( ) == $ type -> getIdentifier ( ) ) { $ already_registered = true ; break ; } } } if ( ! $ already_registered ) { $ this -> types [ $ typeNode -> getName ( ) ] = $ type ; } } } // Loop through all types again to setup class inheritance. // We can only do this once all types have been loaded. Otherwise we risk referencing types which have not been // loaded yet. foreach ( $ types as $ type ) { if ( ( $ baseType = $ type -> getBase ( ) ) && isset ( $ this -> types [ $ baseType ] ) && $ this -> types [ $ baseType ] instanceof ComplexType ) { $ this -> types [ $ type -> getName ( ) ] -> setBaseType ( $ this -> types [ $ baseType ] ) ; } } $ this -> log ( 'Done loading types' ) ; }
Loads all type classes
Loads all type classes