|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
[2002-09-27 01:20 UTC] jan@php.net
[2002-10-03 04:04 UTC] jan@php.net
|
|||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Sat Nov 01 21:00:01 2025 UTC |
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.