php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #33602 SoapVar wrongly encodes boolean
Submitted: 2005-07-07 14:52 UTC Modified: 2005-10-09 13:06 UTC
From: sl at yes-co dot nl Assigned: dmitry (profile)
Status: Closed Package: SOAP related
PHP Version: 5.0.4 OS: Linux 2.6.8
Private report: No CVE-ID: None
 [2005-07-07 14:52 UTC] sl at yes-co dot nl
Description:
------------
Putting a value like this in a SOAP response:

	new SoapParam("true", XSD_BOOLEAN)

results in:

	<Foo xsi:type="xsd:boolean">0</Foo>

while it should be

	<Foo xsi:type="xsd:boolean">true</Foo>

Reproduce code:
---------------
<?php
	$server=new SoapServer(null, Array("uri" => "http://localhost/", "location" => "http://localhost/"));
	$server->addFunction(Foo);
	$server->handle('
		<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" >
			<SOAP-ENV:Body>
				<m:Foo>
				</m:Foo>
			</SOAP-ENV:Body>
		</SOAP-ENV:Envelope>
	');
	
	function Foo() {
		return new SoapVar('true', XSD_BOOLEAN);
	}
?>

Expected result:
----------------
<SOAP-ENV:Envelope ...>
	<SOAP-ENV:Body>
		<ns1:FooResponse>
			<return xsi:type="xsd:boolean">true</return>
		</ns1:FooResponse>
	</SOAP-ENV:Body>
</SOAP-ENV:Envelope>

Actual result:
--------------
<SOAP-ENV:Envelope ...>
	<SOAP-ENV:Body>
		<ns1:FooResponse>
			<return xsi:type="xsd:boolean">0</return>
		</ns1:FooResponse>
	</SOAP-ENV:Body>
</SOAP-ENV:Envelope>

Patches

Pull Requests

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2005-07-07 14:55 UTC] sniper@php.net
Please try using this CVS snapshot:

  http://snaps.php.net/php5-latest.tar.gz
 
For Windows:
 
  http://snaps.php.net/win32/php5-win32-latest.zip


 [2005-07-15 01:00 UTC] php-bugs at lists dot php dot net
No feedback was provided for this bug for over a week, so it is
being suspended automatically. If you are able to provide the
information that was originally requested, please do so and change
the status of the bug back to "Open".
 [2005-07-21 10:15 UTC] sl at yes-co dot nl
Confirmed for PHP Version 5.1.0-dev (Jul 21 2005 08:29:50).

new SoapVar('true', XSD_BOOLEAN)
should give:
<return xsi:type="xsd:boolean">true</return>
but gives:
<return xsi:type="xsd:boolean">0</return>
 [2005-07-21 12:14 UTC] dmitry@php.net
This is not a bug from my point of view.

http://www.w3.org/TR/2001/REC-xmlschema-2-20010502/#boolean

<<<

3.2.2 boolean
[Definition:]  boolean has the ?value space? required to support the mathematical concept of binary-valued logic: {true, false}. 

3.2.2.1 Lexical representation
An instance of a datatype that is defined as ?boolean? can have the following legal literals {true, false, 1, 0}.

>>>


Does this bug prevent ext/soap work with some services?

 [2005-07-21 13:14 UTC] sl at yes-co dot nl
This works as expected:
new SoapVar("2001-01-02T18:28:40+01:00", XSD_DATETIME)
The first parameter is put between XML tags, although it is not a PHP type for a date. The string is just put between tags which indicate it is a datetime. Therefore,
new SoapVar("true", XSD_BOOLEAN)
should put "true" between tags which indicate that it is a boolean.
 [2005-10-09 13:06 UTC] dmitry@php.net
Fixed in CVS HEAD, PHP_5_1 and PHP_5_0.
 
PHP Copyright © 2001-2024 The PHP Group
All rights reserved.
Last updated: Sun Dec 01 18:01:29 2024 UTC