#19628 [Opn->Csd]: WDDX should allow user to specify the variable type
| From: | jan@php.net | Date: | Thu, 03 Oct 2002 09:04:09 +0000 |
| Subject: | #19628 [Opn->Csd]: WDDX should allow user to specify the variable type | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-21357@lists.php.net to get a copy of this message | ||
ID: 19628
Updated by: jan@php.net
Reported By: jimmy@accellion.com
-Status: Open
+Status: Closed
Bug Type: WDDX related
Operating System: All
PHP Version: 4.2.0
Assigned To: jan
New Comment:
This bug has been fixed in CVS.
In case this was a PHP problem, snapshots of the sources are packaged
every three hours; this change will be in the next snapshot. You can
grab the snapshot at http://snaps.php.net/.
In case this was a documentation problem, the fix will show up soon at
http://www.php.net/manual/.
In case this was a PHP.net website problem, the change will show
up on the PHP.net site and on the mirror sites in short time.
Thank you for the report, and for helping us make PHP better.
we have wddx_serialize_type now
Previous Comments:
------------------------------------------------------------------------
[2002-09-27 01:20:32] jan@php.net
assign
------------------------------------------------------------------------
[2002-09-27 01:15:30] jimmy@accellion.com
I am using PHP's WDDX and find it very useful,
but that's only if I use it to exchange data
between PHP program. Once I have to exchange
the data with other languange I begin to face
problem after problem, mostly because of the
way PHP's WDDX interpret the variable type.
The solution for this is, instead of
auto-detecting the type of a var, PHP's WDDX
should allow the user to explicitly specify
the type they want the vars to be encoded as.
For example:
$string = "1";
wddx_serialize($string, WDDX_INTEGER);
// var $string will be encoded as integer,
// instead of string
$file_name = "contain some unicode char";
wddx_serialize($file_name, WDDX_BINARY);
// var $file_name will be encoded
// as binary, instead of string
Two good reasons why this should be implemented:
1. The main purpose of WDDX is to exchange data
between diff lang, and auto-detecting var type
will break this purpose. Moreover, the
type-juggling in PHP will make the case worst.
For example, consider these two data:
array ("2" => "Two", "4" => "Four", "5"
=> "Five");
array ("0" => "Zero", "1" => "One", "2"
=> "Two");
The first one will be interpreted by WDDX as hash
(assoc array). But the second one, where the key
happen to be a sequence starting from 0, will be
interpreted as normal array, not hash.
2. If users can specify the type of a variable,
then PHP's WDDX can support all type which
is defined in WDDX standard.
For example binary type. Currently there's no way
to create a WDDX packet with binary type, because
PHP don't have binary type variable. There's a
workaround to manually base64 the var, but this
will require a change at the other end to handle
this workaround too, which in some cases is
not possible.
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=19628&edit=1