From:             [EMAIL PROTECTED]
Operating system: All
PHP version:      4.2.0
PHP Bug Type:     WDDX related
Bug description:  WDDX should allow user to specify the variable type

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 bug report at http://bugs.php.net/?id=19628&edit=1
-- 
Try a CVS snapshot:  http://bugs.php.net/fix.php?id=19628&r=trysnapshot
Fixed in CVS:        http://bugs.php.net/fix.php?id=19628&r=fixedcvs
Fixed in release:    http://bugs.php.net/fix.php?id=19628&r=alreadyfixed
Need backtrace:      http://bugs.php.net/fix.php?id=19628&r=needtrace
Try newer version:   http://bugs.php.net/fix.php?id=19628&r=oldversion
Not developer issue: http://bugs.php.net/fix.php?id=19628&r=support
Expected behavior:   http://bugs.php.net/fix.php?id=19628&r=notwrong
Not enough info:     http://bugs.php.net/fix.php?id=19628&r=notenoughinfo
Submitted twice:     http://bugs.php.net/fix.php?id=19628&r=submittedtwice
register_globals:    http://bugs.php.net/fix.php?id=19628&r=globals

Reply via email to