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