Changeset 21299 for branches/version-2_11-dev/data/module/SOAP/Base.php
- Timestamp:
- 2011/10/25 00:02:55 (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/version-2_11-dev/data/module/SOAP/Base.php
r20119 r21299 25 25 */ 26 26 27 /** Define linebreak sequence for the Mail_Mime package. */ 27 28 define('MAIL_MIMEPART_CRLF', "\r\n"); 29 28 30 require_once 'PEAR.php'; 29 31 … … 35 37 } 36 38 37 define('SOAP_LIBRARY_VERSION', '0.1 1.0');38 define('SOAP_LIBRARY_NAME', 'PEAR-SOAP 0.1 1.0-beta');39 define('SOAP_LIBRARY_VERSION', '0.12.0'); 40 define('SOAP_LIBRARY_NAME', 'PEAR-SOAP 0.12.0-beta'); 39 41 40 42 // Set schema version. … … 61 63 define('SOAP_DEFAULT_ENCODING', 'UTF-8'); 62 64 65 /** 66 * @package SOAP 67 */ 63 68 class SOAP_Base_Object extends PEAR 64 69 { … … 116 121 $is_instance = isset($this) && is_a($this, 'SOAP_Base_Object'); 117 122 if (is_object($str)) { 118 $fault = &$str;123 $fault = $str; 119 124 } else { 120 125 if (!$code) { … … 122 127 } 123 128 require_once 'SOAP/Fault.php'; 124 $fault =& new SOAP_Fault($str, 125 $code, 126 $actorURI, 127 $detail, 128 $mode, 129 $options); 129 $fault = new SOAP_Fault($str, $code, $actorURI, $detail, $mode, 130 $options); 130 131 } 131 132 if ($is_instance) { 132 $this->fault = &$fault;133 $this->fault = $fault; 133 134 } 134 135 … … 241 242 * Hash with used namespaces. 242 243 * 243 * @ array244 * @var array 244 245 */ 245 246 var $_namespaces; … … 248 249 * The default namespace. 249 250 * 250 * @ string251 * @var string 251 252 */ 252 253 var $_namespace; … … 287 288 288 289 /** 290 * Sets the SOAP-ENV prefix and returns the current value. 291 * 292 * @access public 293 * 294 * @param string SOAP-ENV prefix 295 * 296 * @return string current SOAP-ENV prefix. 297 */ 298 function SOAPENVPrefix($prefix = null) 299 { 300 static $_soapenv_prefix = 'SOAP-ENV'; 301 if (!is_null($prefix)) { 302 $_soapenv_prefix = $prefix; 303 } 304 return $_soapenv_prefix; 305 } 306 307 /** 308 * Sets the SOAP-ENC prefix and returns the current value. 309 * 310 * @access public 311 * 312 * @param string SOAP-ENC prefix 313 * 314 * @return string current SOAP-ENC prefix. 315 */ 316 function SOAPENCPrefix($prefix = null) 317 { 318 static $_soapenv_prefix = 'SOAP-ENC'; 319 if (!is_null($prefix)) { 320 $_soapenv_prefix = $prefix; 321 } 322 return $_soapenv_prefix; 323 } 324 325 /** 289 326 * Sets the default namespace. 290 327 * … … 299 336 { 300 337 $this->_namespaces = array( 301 'http://schemas.xmlsoap.org/soap/envelope/' => 'SOAP-ENV',338 'http://schemas.xmlsoap.org/soap/envelope/' => SOAP_BASE::SOAPENVPrefix(), 302 339 'http://www.w3.org/2001/XMLSchema' => 'xsd', 303 340 'http://www.w3.org/2001/XMLSchema-instance' => 'xsi', 304 'http://schemas.xmlsoap.org/soap/encoding/' => 'SOAP-ENC');341 'http://schemas.xmlsoap.org/soap/encoding/' => SOAP_BASE::SOAPENCPrefix()); 305 342 } 306 343 … … 347 384 } 348 385 349 function _isSoapValue(&$value) 350 { 351 return is_a($value, 'SOAP_Value'); 352 } 353 354 function _serializeValue(&$value, $name = '', $type = false, 355 $elNamespace = null, $typeNamespace = null, 386 /** 387 * Serializes a value, array or object according to the rules set by this 388 * object. 389 * 390 * @see SOAP_Value 391 * 392 * @param mixed $value The actual value. 393 * @param QName $name The value name. 394 * @param QName $type The value type. 395 * @param array $options A list of encoding and serialization options. 396 * @param array $attributes A hash of additional attributes. 397 * @param string $artype The type of any array elements. 398 */ 399 function _serializeValue($value, $name = null, $type = null, 356 400 $options = array(), $attributes = array(), 357 401 $artype = '') 358 402 { 359 $namespaces = array();360 $arrayType = $array_depth = $xmlout_value = null;361 $typePrefix = $elPrefix = $xmlout_offset= $xmlout_arrayType = '';403 $namespaces = array(); 404 $arrayType = $array_depth = $xmlout_value = null; 405 $typePrefix = $elPrefix = $xmlout_arrayType = ''; 362 406 $xmlout_type = $xmlns = $ptype = $array_type_ns = ''; 363 407 364 if (!$name || is_numeric($name)) {365 $name = 'item';408 if (!$name->name || is_numeric($name->name)) { 409 $name->name = 'item'; 366 410 } 367 411 368 412 if ($this->_wsdl) { 369 413 list($ptype, $arrayType, $array_type_ns, $array_depth) 370 = $this->_wsdl->getSchemaType($type, $name , $typeNamespace);414 = $this->_wsdl->getSchemaType($type, $name); 371 415 } 372 416 … … 378 422 } 379 423 if (!$type) { 380 $type = $ptype;424 $type = new QName($ptype); 381 425 } 382 426 383 427 if (strcasecmp($ptype, 'Struct') == 0 || 384 strcasecmp($type , 'Struct') == 0) {428 strcasecmp($type->name, 'Struct') == 0) { 385 429 // Struct 386 $vars = null; 387 if (is_object($value)) { 388 $vars = get_object_vars($value); 389 } else { 390 $vars = &$value; 391 } 430 $vars = is_object($value) ? get_object_vars($value) : $value; 392 431 if (is_array($vars)) { 393 432 foreach (array_keys($vars) as $k) { … … 396 435 continue; 397 436 } 437 398 438 if (is_object($vars[$k])) { 399 439 if (is_a($vars[$k], 'SOAP_Value')) { … … 403 443 // converting to an array is more overhead than we 404 444 // should really do. 405 $xmlout_value .= $this->_serializeValue(get_object_vars($vars[$k]), $k, false, $this->_section5 ? null : $elNamespace);445 $xmlout_value .= $this->_serializeValue(get_object_vars($vars[$k]), new QName($k, $this->_section5 ? null : $name->namepace), null, $options); 406 446 } 407 447 } else { 408 $xmlout_value .= $this->_serializeValue($vars[$k], $k, false, $this->_section5 ? null : $elNamespace);448 $xmlout_value .= $this->_serializeValue($vars[$k], new QName($k, $this->_section5 ? null : $name->namespace), false, $options); 409 449 } 410 450 } 411 451 } 412 452 } elseif (strcasecmp($ptype, 'Array') == 0 || 413 strcasecmp($type , 'Array') == 0) {453 strcasecmp($type->name, 'Array') == 0) { 414 454 // Array. 415 $typeNamespace = SOAP_SCHEMA_ENCODING; 416 $orig_type = $type; 417 $type = 'Array'; 455 $type = new QName('Array', SOAP_SCHEMA_ENCODING); 418 456 $numtypes = 0; 419 457 $value = (array)$value; … … 439 477 $ar_size = count($value); 440 478 foreach ($value as $array_val) { 441 if ( $this->_isSoapValue($array_val)) {479 if (is_a($array_val, 'SOAP_Value')) { 442 480 $array_type = $array_val->type; 443 481 $array_types[$array_type] = 1; … … 447 485 $array_type = $this->_getType($array_val); 448 486 $array_types[$array_type] = 1; 449 $xmlout_value .= $this->_serializeValue($array_val, 'item', $array_type, $this->_section5 ? null : $elNamespace); 487 if (empty($options['keep_arrays_flat'])) { 488 $xmlout_value .= $this->_serializeValue($array_val, new QName('item', $this->_section5 ? null : $name->namespace), new QName($array_type), $options); 489 } else { 490 $xmlout_value .= $this->_serializeValue($array_val, $name, new QName($array_type), $options, $attributes); 491 } 450 492 } 451 493 } 452 494 453 $xmlout_offset = ' SOAP-ENC:offset="[0]"';454 495 if (!$arrayType) { 455 496 $numtypes = count($array_types); … … 478 519 } elseif (isset($this->_typemap[$this->_XMLSchemaVersion][$arrayType])) { 479 520 $array_type_prefix = $this->_namespaces[$this->_XMLSchemaVersion]; 521 } elseif (isset($this->_typemap[SOAP_SCHEMA_ENCODING][$arrayType])) { 522 $array_type_prefix = SOAP_BASE::SOAPENCPrefix(); 480 523 } 481 524 if ($array_type_prefix) { … … 484 527 } 485 528 486 $xmlout_arrayType = ' SOAP-ENC:arrayType="' . $arrayType; 529 $xmlout_arrayType = ' ' . SOAP_BASE::SOAPENCPrefix() 530 . ':arrayType="' . $arrayType; 487 531 if ($array_depth != null) { 488 532 for ($i = 0; $i < $array_depth; $i++) { … … 491 535 } 492 536 $xmlout_arrayType .= "[$ar_size]\""; 493 } elseif ( $this->_isSoapValue($value)) {537 } elseif (is_a($value, 'SOAP_Value')) { 494 538 $xmlout_value = $value->serialize($this); 495 } elseif ($type == 'string') {539 } elseif ($type->name == 'string') { 496 540 $xmlout_value = htmlspecialchars($value); 497 } elseif ($type == 'rawstring') {498 $xmlout_value = &$value;499 } elseif ($type == 'boolean') {541 } elseif ($type->name == 'rawstring') { 542 $xmlout_value = $value; 543 } elseif ($type->name == 'boolean') { 500 544 $xmlout_value = $value ? 'true' : 'false'; 501 545 } else { 502 $xmlout_value = &$value;546 $xmlout_value = $value; 503 547 } 504 548 505 549 // Add namespaces. 506 if ($ elNamespace) {507 $elPrefix = $this->_getNamespacePrefix($ elNamespace);550 if ($name->namespace) { 551 $elPrefix = $this->_getNamespacePrefix($name->namespace); 508 552 if ($elPrefix) { 509 $xmlout_name = "$elPrefix:$name";553 $xmlout_name = $elPrefix . ':' . $name->name; 510 554 } else { 511 $xmlout_name = $name ;555 $xmlout_name = $name->name; 512 556 } 513 557 } else { 514 $xmlout_name = $name; 515 } 516 517 if ($typeNamespace) { 518 $typePrefix = $this->_getNamespacePrefix($typeNamespace); 558 $xmlout_name = $name->name; 559 } 560 561 if ($type->namespace) { 562 $typePrefix = false; 563 if (empty($options['no_type_prefix'])) { 564 $typePrefix = $this->_getNamespacePrefix($type->namespace); 565 } 519 566 if ($typePrefix) { 520 $xmlout_type = "$typePrefix:$type";567 $xmlout_type = $typePrefix . ':' . $type->name; 521 568 } else { 522 $xmlout_type = $type ;523 } 524 } elseif ($type &&525 isset($this->_typemap[$this->_XMLSchemaVersion][$type ])) {569 $xmlout_type = $type->name; 570 } 571 } elseif ($type->name && 572 isset($this->_typemap[$this->_XMLSchemaVersion][$type->name])) { 526 573 $typePrefix = $this->_namespaces[$this->_XMLSchemaVersion]; 527 574 if ($typePrefix) { 528 $xmlout_type = "$typePrefix:$type";575 $xmlout_type = $typePrefix . ':' . $type->name; 529 576 } else { 530 $xmlout_type = $type ;577 $xmlout_type = $type->name; 531 578 } 532 579 } … … 557 604 } else { 558 605 $xml = "\r\n<$xmlout_name$xmlout_type$xmlns$xmlout_arrayType" . 559 "$xmlout_offset$xml_attr>$xmlout_value</$xmlout_name>"; 560 } 606 "$xml_attr>$xmlout_value</$xmlout_name>"; 607 } 608 } elseif ($type->name == 'Array' && !empty($options['keep_arrays_flat'])) { 609 $xml = $xmlout_value; 561 610 } else { 562 611 if (is_null($xmlout_value)) { … … 574 623 * Converts a PHP type to a SOAP type. 575 624 * 576 * @access private 577 * 578 * @param string $value The value to inspect. 625 * @param mixed $value The value to inspect. 579 626 * 580 627 * @return string The value's SOAP type. 581 628 */ 582 function _getType( &$value)629 function _getType($value) 583 630 { 584 631 $type = gettype($value); … … 596 643 if ($this->_isHash($value)) { 597 644 $type = 'Struct'; 598 } else { 599 $ar_size = count($value); 645 break; 646 } 647 if (count($value) > 1) { 648 // For non-wsdl structs that are all the same type 600 649 reset($value); 601 $key1 = key($value); 602 if ($ar_size > 0 && is_a($key1, 'SOAP_Value')) { 603 // FIXME: for non-wsdl structs that are all the same type 604 $key2 = key($value); 605 if ($ar_size > 1 && 606 $this->_isSoapValue($key1) && 607 $this->_isSoapValue($key2) && 608 $key1->name != $key2->name) { 609 // This is a struct, not an array. 610 $type = 'Struct'; 611 } else { 612 $type = 'Array'; 613 } 614 } else { 615 $type = 'Array'; 650 $value1 = next($value); 651 $value2 = next($value); 652 if (is_a($value1, 'SOAP_Value') && 653 is_a($value2, 'SOAP_Value') && 654 $value1->name != $value2->name) { 655 // This is a struct, not an array. 656 $type = 'Struct'; 657 break; 616 658 } 617 659 } 660 $type = 'Array'; 618 661 break; 619 662 … … 664 707 } else { 665 708 $type = $this->_getType($value); 666 $xml .= $this->_serializeValue($value, 'item', $type);709 $xml .= $this->_serializeValue($value, new QName('item'), new QName($type)); 667 710 } 668 711 $size = null; … … 690 733 * @return boolean True if the specified array is a hash. 691 734 */ 692 function _isHash(&$a) 693 { 694 // I really dislike having to loop through this in PHP code, really 695 // large arrays will be slow. We need a C function to do this. 696 $it = 0; 697 foreach ($a as $k => $v) { 735 function _isHash($a) 736 { 737 foreach (array_keys($a) as $k) { 698 738 // Checking the type is faster than regexp. 699 739 if (!is_int($k)) { 700 740 return true; 701 741 } 702 // If someone has a large hash they should really be defining the703 // type.704 if ($it++ > 10) {705 $this->_raiseSoapFault('Large associative array passed where a SOAP_Value was expected');706 return false;707 }708 742 } 709 743 return false; … … 718 752 719 753 /** 720 * Converts a SOAP_Value object into a StdClass PHP object721 */722 function &_decode(&$soapval)723 { 724 if (! $this->_isSoapValue($soapval)) {754 * Converts a SOAP_Value object into a PHP value. 755 */ 756 function _decode($soapval) 757 { 758 if (!is_a($soapval, 'SOAP_Value')) { 725 759 return $soapval; 726 } elseif (is_array($soapval->value)) { 727 if ($soapval->type != 'Array') { 760 } 761 762 if (is_array($soapval->value)) { 763 $isstruct = $soapval->type != 'Array'; 764 if ($isstruct) { 728 765 $classname = $this->_defaultObjectClassname; 729 766 if (isset($this->_type_translation[$soapval->tqn->fqn()])) { … … 745 782 } 746 783 } 747 $return = &new $classname;784 $return = new $classname; 748 785 } else { 749 786 $return = array(); 750 787 } 751 788 752 $counter = 1;753 $isstruct = !is_array($return);754 789 foreach ($soapval->value as $item) { 755 if ( is_object($return)) {790 if ($isstruct) { 756 791 if ($this->_wsdl) { 757 792 // Get this child's WSDL information. … … 766 801 } 767 802 } 768 if ( !$isstruct ||$item->type == 'Array') {803 if ($item->type == 'Array') { 769 804 if (isset($return->{$item->name}) && 770 805 is_object($return->{$item->name})) { 771 $return->{$item->name} = &$this->_decode($item);806 $return->{$item->name} = $this->_decode($item); 772 807 } elseif (isset($return->{$item->name}) && 773 808 is_array($return->{$item->name})) { … … 779 814 ); 780 815 } elseif (is_array($return)) { 781 $return[] = &$this->_decode($item);816 $return[] = $this->_decode($item); 782 817 } else { 783 $return->{$item->name} = &$this->_decode($item);818 $return->{$item->name} = $this->_decode($item); 784 819 } 785 820 } elseif (isset($return->{$item->name})) { 786 //$isstruct = false;821 $d = $this->_decode($item); 787 822 if (count(get_object_vars($return)) == 1) { 788 $ d =& $this->_decode($item);823 $isstruct = false; 789 824 $return = array($return->{$item->name}, $d); 790 825 } else { 791 $d =& $this->_decode($item);792 826 $return->{$item->name} = array($return->{$item->name}, $d); 793 827 } 794 828 } else { 795 $return->{$item->name} = &$this->_decode($item);829 $return->{$item->name} = $this->_decode($item); 796 830 } 797 831 // Set the attributes as members in the class. … … 804 838 } 805 839 } else { 806 if ($soapval->arrayType && $this->_isSoapValue($item)) {840 if ($soapval->arrayType && is_a($item, 'SOAP_Value')) { 807 841 if ($this->_isBase64Type($item->type) && 808 842 !$this->_isBase64Type($soapval->arrayType)) { … … 813 847 $item->type = $soapval->arrayType; 814 848 } 815 if (!$isstruct) { 816 $return[] = $this->_decode($item); 817 } elseif (isset($return[$item->name])) { 818 $isstruct = false; 819 $d =& $this->_decode($item); 820 $return = array($return[$item->name], $d); 821 } else { 822 $return[$item->name] = $this->_decode($item); 823 } 849 $return[] = $this->_decode($item); 824 850 } 825 851 } … … 840 866 settype($soapval->value, 841 867 $this->_typemap[SOAP_XML_SCHEMA_VERSION][$soapval->type]); 868 } elseif ($soapval->type == 'Struct') { 869 $soapval->value = null; 842 870 } 843 871 … … 848 876 * Creates the SOAP envelope with the SOAP envelop data. 849 877 * 850 * @param mixed $method 851 * @param array $headers 852 * @param string $encoding 853 * @param array $options 854 * 855 * @return string 856 */ 857 function makeEnvelope(&$method, &$headers, 858 $encoding = SOAP_DEFAULT_ENCODING, 878 * @param SOAP_Value $method SOAP_Value instance with the method name as 879 * the name, and the method arguments as the 880 * value. 881 * @param array $headers A list of additional SOAP_Header objects. 882 * @param string $encoding The charset of the SOAP message. 883 * @param array $options A list of encoding/serialization options. 884 * 885 * @return string The complete SOAP message. 886 */ 887 function makeEnvelope($method, $headers, $encoding = SOAP_DEFAULT_ENCODING, 859 888 $options = array()) 860 889 { … … 862 891 863 892 if ($headers) { 864 $c = count($headers); 865 for ($i = 0; $i < $c; $i++) { 893 for ($i = 0, $c = count($headers); $i < $c; $i++) { 866 894 $header_xml .= $headers[$i]->serialize($this); 867 895 } 868 $header_xml = "<SOAP-ENV:Header>\r\n$header_xml\r\n</SOAP-ENV:Header>\r\n"; 896 $header_xml = sprintf("<%s:Header>\r\n%s\r\n</%s:Header>\r\n", 897 SOAP_BASE::SOAPENVPrefix(), $header_xml, 898 SOAP_BASE::SOAPENVPrefix()); 869 899 } 870 900 871 901 if (!isset($options['input']) || $options['input'] == 'parse') { 872 902 if (is_array($method)) { 873 $c = count($method); 874 for ($i = 0; $i < $c; $i++) { 903 for ($i = 0, $c = count($method); $i < $c; $i++) { 875 904 $smsg .= $method[$i]->serialize($this); 876 905 } … … 881 910 $smsg = $method; 882 911 } 883 $body = "<SOAP-ENV:Body>\r\n" . $smsg . "\r\n</SOAP-ENV:Body>\r\n"; 912 $body = sprintf("<%s:Body>%s\r\n</%s:Body>\r\n", 913 SOAP_BASE::SOAPENVPrefix(), $smsg, 914 SOAP_BASE::SOAPENVPrefix()); 884 915 885 916 foreach ($this->_namespaces as $k => $v) { 886 $ns_string .= " xmlns:$v=\"$k\"\r\n";917 $ns_string .= "\r\n " . sprintf('xmlns:%s="%s"', $v, $k); 887 918 } 888 919 if ($this->_namespace) { 889 $ns_string .= " xmlns=\"{$this->_namespace}\"\r\n";890 } 891 892 /* If 'use' == 'literal', wedo not put in the encodingStyle. This is920 $ns_string .= "\r\n " . sprintf('xmlns="%s"', $this->_namespace); 921 } 922 923 /* If 'use' == 'literal', do not put in the encodingStyle. This is 893 924 * denoted by $this->_section5 being false. 'use' can be defined at a 894 925 * more granular level than we are dealing with here, so this does not 895 926 * work for all services. */ 896 $xml = "<?xml version=\"1.0\" encoding=\"$encoding\"?>\r\n\r\n". 897 "<SOAP-ENV:Envelope $ns_string". 898 ($this->_section5 ? ' SOAP-ENV:encodingStyle="' . SOAP_SCHEMA_ENCODING . '"' : ''). 899 ">\r\n". 900 "$header_xml$body</SOAP-ENV:Envelope>\r\n"; 927 $xml = sprintf('<?xml version="1.0" encoding="%s"?>%s<%s:Envelope%s', 928 $encoding, "\r\n", SOAP_BASE::SOAPENVPrefix(), 929 $ns_string); 930 if ($this->_section5) { 931 $xml .= "\r\n " . sprintf('%s:encodingStyle="%s"', 932 SOAP_BASE::SOAPENVPrefix(), 933 SOAP_SCHEMA_ENCODING); 934 } 935 $xml .= sprintf('>%s%s%s</%s:Envelope>' . "\r\n", 936 "\r\n", $header_xml, $body, SOAP_BASE::SOAPENVPrefix()); 901 937 902 938 return $xml; … … 917 953 $params['content_type'] = 'text/xml'; 918 954 $params['charset'] = $encoding; 919 $params['encoding'] = 'base64';920 955 $msg->addSubPart($xml, $params); 921 956 … … 966 1001 967 1002 // Lame thing to have to do for decoding. 968 $decoder = &new Mail_mimeDecode($data);1003 $decoder = new Mail_mimeDecode($data); 969 1004 $structure = $decoder->decode($params); 970 1005 … … 978 1013 $headers = array_merge($structure->headers, 979 1014 $structure->parts[0]->headers); 980 if (count($structure->parts) >1) {981 $mime_parts = array_splice($structure->parts,1);982 // Prepare the parts for the SOAP parser.983 984 $c = count($mime_parts);985 for ($i = 0; $i < $c; $i++) {986 $p =& $mime_parts[$i];987 if (isset($p->headers['content-location'])) {988 // TODO: modify location per SwA note section 3989 // http://www.w3.org/TR/SOAP-attachments990 $attachments[$p->headers['content-location']] = $p->body;991 } else {992 $cid = 'cid:' . substr($p->headers['content-id'], 1, -1);993 $attachments[$cid] = $p->body;994 }1015 if (count($structure->parts) <= 1) { 1016 return; 1017 } 1018 1019 $mime_parts = array_splice($structure->parts, 1); 1020 // Prepare the parts for the SOAP parser. 1021 for ($i = 0, $c = count($mime_parts); $i < $c; $i++) { 1022 $p = $mime_parts[$i]; 1023 if (isset($p->headers['content-location'])) { 1024 // TODO: modify location per SwA note section 3 1025 // http://www.w3.org/TR/SOAP-attachments 1026 $attachments[$p->headers['content-location']] = $p->body; 1027 } else { 1028 $cid = 'cid:' . substr($p->headers['content-id'], 1, -1); 1029 $attachments[$cid] = $p->body; 995 1030 } 996 1031 } … … 1010 1045 // This SHOULD be moved to the transport layer, e.g. PHP itself should 1011 1046 // handle parsing DIME ;) 1012 $dime = &new Net_DIME_Message();1047 $dime = new Net_DIME_Message(); 1013 1048 $err = $dime->decodeData($data); 1014 1049 if (PEAR::isError($err)) { … … 1036 1071 1037 1072 /** 1038 * @deprecated Use setTypeTranslation().1039 */1040 function __set_type_translation($type, $class = null)1041 {1042 $this->setTypeTranslation($type, $class);1043 }1044 1045 /**1046 1073 * Explicitly sets the translation for a specific class. 1047 1074 * … … 1066 1093 * Class used to handle QNAME values in XML. 1067 1094 * 1068 * @access public1069 1095 * @package SOAP 1070 1096 * @author Shane Caraveo <shane@php.net> Conversion to PEAR and updates … … 1074 1100 var $name = ''; 1075 1101 var $ns = ''; 1076 var $namespace ='';1102 var $namespace = ''; 1077 1103 1078 1104 function QName($name, $namespace = '')
Note: See TracChangeset
for help on using the changeset viewer.