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
Welcome back! If you're the original bug submitter, here's where you can edit the bug or add additional notes.
If you forgot your password, you can retrieve your password here.
Password:
Status:
Package:
Bug Type:
Summary:
From: sl at yes-co dot nl
New email:
PHP Version: OS:

 

 [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: Wed Dec 04 18:01:31 2024 UTC