Ignore:
Timestamp:
2012/02/09 01:26:58 (10 years ago)
Author:
Seasoft
Message:

#1522 (PEAR::SOAP をバージョンアップ)

  • 0.12.0 -> 0.13.0
  • SOAP_WSDL により、「Yahoo!デベロッパーネットワーク」の「オークション SOAP」を取得できることを確認した。
File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/version-2_12-dev/data/module/SOAP/WSDL.php

    r21318 r21461  
    212212    function parseURL($wsdl_uri) 
    213213    { 
    214         $parser =& new $this->wsdlParserClass($wsdl_uri, $this, $this->docs); 
     214        $parser = new $this->wsdlParserClass($wsdl_uri, $this, $this->docs); 
    215215 
    216216        if ($parser->fault) { 
     
    332332        // Message data from messages. 
    333333        $inputMsg = $opData['input']['message']; 
     334        if (isset($opData['input']['parts']) && 
     335            !is_array($opData['input']['parts'])) { 
     336            $opData['input']['parts'] = array($opData['input']['parts'] => ''); 
     337 
     338        } 
    334339        if (is_array($this->messages[$inputMsg])) { 
    335340            foreach ($this->messages[$inputMsg] as $pname => $pattrs) { 
     
    351356        } 
    352357        $outputMsg = $opData['output']['message']; 
     358        if (isset($opData['output']['parts']) && 
     359            !is_array($opData['output']['parts'])) { 
     360            $opData['output']['parts'] = array($opData['output']['parts'] => ''); 
     361        } 
    353362        if (is_array($this->messages[$outputMsg])) { 
    354363            foreach ($this->messages[$outputMsg] as $pname => $pattrs) { 
     
    789798            eval($proxy); 
    790799        } 
    791         $proxy =& new $classname; 
     800        $proxy = new $classname; 
    792801 
    793802        return $proxy; 
     
    939948        static $trail = array(); 
    940949 
    941         $arrayType = ereg_replace('\[\]$', '', $arrayType); 
     950        $arrayType = preg_replace('/\[\]$/', '', $arrayType); 
    942951 
    943952        // Protect against circular references XXX We really need to remove 
     
    11571166    { 
    11581167        parent::SOAP_Base('WSDLPARSER'); 
    1159         $this->cache =& new SOAP_WSDL_Cache($wsdl->cacheUse, 
     1168        $this->cache = new SOAP_WSDL_Cache($wsdl->cacheUse, 
    11601169                                            $wsdl->cacheMaxAge, 
    11611170                                            $wsdl->cacheDir); 
     
    12001209        // Get element prefix. 
    12011210        $qname = new QName($name); 
    1202         if ($qname->ns) { 
    1203             $ns = $qname->ns; 
     1211        if ($qname->prefix) { 
     1212            $ns = $qname->prefix; 
    12041213            if ($ns && ((!$this->tns && strcasecmp($qname->name, 'definitions') == 0) || $ns == $this->tns)) { 
    12051214                $name = $qname->name; 
     
    12491258                        $qn = new QName($attrs['base']); 
    12501259                        $this->wsdl->complexTypes[$this->schema][$this->currentComplexType]['type'] = $qn->name; 
    1251                         $this->wsdl->complexTypes[$this->schema][$this->currentComplexType]['namespace'] = $qn->ns; 
     1260                        $this->wsdl->complexTypes[$this->schema][$this->currentComplexType]['namespace'] = $qn->prefix; 
    12521261                    } else { 
    12531262                        $this->wsdl->complexTypes[$this->schema][$this->currentComplexType]['type'] = 'Struct'; 
     
    12631272                    $qn = new QName($attrs['type']); 
    12641273                    $attrs['type'] = $qn->name; 
    1265                     if ($qn->ns && array_key_exists($qn->ns, $this->wsdl->namespaces)) { 
    1266                         $attrs['namespace'] = $qn->ns; 
     1274                    if ($qn->prefix && array_key_exists($qn->prefix, $this->wsdl->namespaces)) { 
     1275                        $attrs['namespace'] = $qn->prefix; 
    12671276                    } 
    12681277                } 
     
    13621371                                        $this->wsdl->complexTypes[$this->schema][$this->currentComplexType][$q->name] = $vq->name. $vq->arrayInfo; 
    13631372                                        $this->wsdl->complexTypes[$this->schema][$this->currentComplexType]['type'] = 'Array'; 
    1364                                         $this->wsdl->complexTypes[$this->schema][$this->currentComplexType]['namespace'] = $vq->ns; 
     1373                                        $this->wsdl->complexTypes[$this->schema][$this->currentComplexType]['namespace'] = $vq->prefix; 
    13651374                                    } else { 
    13661375                                        $this->wsdl->complexTypes[$this->schema][$this->currentComplexType][$q->name] = $vq->name; 
     
    13891398                if ($qn) { 
    13901399                    $attrs['type'] = $qn->name; 
    1391                     $attrs['namespace'] = $qn->ns; 
     1400                    $attrs['namespace'] = $qn->prefix; 
    13921401                } 
    13931402                $this->wsdl->messages[$this->currentMessage][$attrs['name']] = $attrs; 
     
    14261435                        $qn = new QName($attrs['message']); 
    14271436                        $this->wsdl->portTypes[$this->currentPortType][$this->currentOperation][$name]['message'] = $qn->name; 
    1428                         $this->wsdl->portTypes[$this->currentPortType][$this->currentOperation][$name]['namespace'] = $qn->ns; 
     1437                        $this->wsdl->portTypes[$this->currentPortType][$this->currentOperation][$name]['namespace'] = $qn->prefix; 
    14291438                    } 
    14301439                } 
     
    14401449 
    14411450        case 'binding': 
    1442             $ns = $qname->ns ? $this->wsdl->namespaces[$qname->ns] : SCHEMA_WSDL; 
     1451            $ns = $qname->prefix ? $this->wsdl->namespaces[$qname->prefix] : SCHEMA_WSDL; 
    14431452            switch ($ns) { 
    14441453            case SCHEMA_SOAP: 
     
    16271636 
    16281637        case 'service': 
    1629             $ns = $qname->ns ? $this->wsdl->namespaces[$qname->ns] : SCHEMA_WSDL; 
     1638            $ns = $qname->prefix ? $this->wsdl->namespaces[$qname->prefix] : SCHEMA_WSDL; 
    16301639 
    16311640            switch ($qname->name) { 
     
    16371646                $qn = new QName($attrs['binding']); 
    16381647                $this->wsdl->services[$this->currentService]['ports'][$this->currentPort]['binding'] = $qn->name; 
    1639                 $this->wsdl->services[$this->currentService]['ports'][$this->currentPort]['namespace'] = $qn->ns; 
     1648                $this->wsdl->services[$this->currentService]['ports'][$this->currentPort]['namespace'] = $qn->prefix; 
    16401649                break; 
    16411650 
     
    16431652                $this->wsdl->services[$this->currentService]['ports'][$this->currentPort]['address'] = $attrs; 
    16441653                // what TYPE of port is it?  SOAP or HTTP? 
    1645                 $ns = $qname->ns ? $this->wsdl->namespaces[$qname->ns] : SCHEMA_WSDL; 
     1654                $ns = $qname->prefix ? $this->wsdl->namespaces[$qname->prefix] : SCHEMA_WSDL; 
    16461655                switch ($ns) { 
    16471656                case SCHEMA_WSDL_HTTP: 
     
    16711680        switch ($qname->name) { 
    16721681        case 'import': 
    1673             // sect 2.1.1 wsdl:import attributes: namespace location 
    1674             if ((isset($attrs['location']) || isset($attrs['schemaLocation'])) && 
    1675                 !isset($this->wsdl->imports[$attrs['namespace']])) { 
     1682        case 'include': 
     1683            // WSDL 2.1.1 wsdl:import, XML Schema 4.2.3 xsd:import, XML Schema 
     1684            // 4.2.1 xsd:include attributes 
     1685            $this->status = 'types'; 
     1686            if (isset($attrs['location']) || isset($attrs['schemaLocation'])) { 
    16761687                $uri = isset($attrs['location']) ? $attrs['location'] : $attrs['schemaLocation']; 
    16771688                $location = @parse_url($uri); 
     
    16801691                    $uri = $this->mergeUrl($base, $uri); 
    16811692                } 
    1682  
    1683                 $this->wsdl->imports[$attrs['namespace']] = $attrs; 
     1693                if (isset($this->wsdl->imports[$uri])) { 
     1694                    break; 
     1695                } 
     1696                $this->wsdl->imports[$uri] = $attrs; 
     1697 
    16841698                $import_parser_class = get_class($this); 
    1685                 $import_parser =& new $import_parser_class($uri, $this->wsdl, $this->docs); 
     1699                $import_parser = new $import_parser_class($uri, $this->wsdl, $this->docs); 
    16861700                if ($import_parser->fault) { 
    1687                     unset($this->wsdl->imports[$attrs['namespace']]); 
     1701                    unset($this->wsdl->imports[$uri]); 
    16881702                    return false; 
    16891703                } 
    1690                 $this->currentImport = $attrs['namespace']; 
    1691             } 
    1692             // Continue on to the 'types' case - lack of break; is 
    1693             // intentional. 
     1704            } 
     1705            $this->status = 'types'; 
     1706            break; 
    16941707 
    16951708        case 'types': 
     
    17331746            // sect 2.5 wsdl:binding attributes: name type 
    17341747            // children: wsdl:operation soap:binding http:binding 
    1735             if ($qname->ns && $qname->ns != $this->tns) { 
     1748            if ($qname->prefix && $qname->prefix != $this->tns) { 
    17361749                break; 
    17371750            } 
     
    17401753            $qn = new QName($attrs['type']); 
    17411754            $this->wsdl->bindings[$this->currentBinding]['type'] = $qn->name; 
    1742             $this->wsdl->bindings[$this->currentBinding]['namespace'] = $qn->ns; 
     1755            $this->wsdl->bindings[$this->currentBinding]['namespace'] = $qn->prefix; 
    17431756            break; 
    17441757 
Note: See TracChangeset for help on using the changeset viewer.