• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • 位置: php 中文手册 -> php 外部扩展库

    wddx(分布式数据交换)

    WDDX 是一项允许在保持数据完整性的前提下在系统格式中立的系统间交换数据和数据结构的XML技术。它定义了用来传送数据的XML结构,但它没有定义数据传输的机制;因此,WDDX本身不能被认为是一种web服务但却可以用来建立web服务,确切地说,你可以使用包括(并不限制于)HTTP,FTP,SMTP和 POP的任何一种传输类型。一般来说,你可以使用任何一种支持传输文本数据的协议。

    此扩展需要 libxml PHP 扩展。这表示需要使用--enable-libxml,尽管这将隐式完成因为 libxml 是缺省开启的。

    为了使用WDDX,需要安装expat库(Apache 1.3.7或更高版本附带)。

    安装

    安装所需的expat库后,使用--enable-wddx编译PHP,并使用--with-libexpat-dir进行expat。PHP 的 Windows 版本已内建对此扩展的支持。不需要载入额外的扩展来使用这些函数。

    此扩展定义了由WDDX_packet_start()回的WDDX数据包标识符。

    例子

    所有序列化变量的函数都使用数组的第一个元素来确定是否要将数组序列化为数组或结构。如果第一个元素具有字符串键,则它将序列化为结构,否则将序列化为数组。

    Example #2 Using incremental packets with WDDX

    <?php
    $pi = 3.1415926;
    $packet_id = wddx_packet_start("PHP");
    wddx_add_vars($packet_id, "pi");
    /* Suppose $cities came from database */
    $cities = array("Austin", "Novato", "Seattle");
    wddx_add_vars($packet_id, "cities");
    $packet = wddx_packet_end($packet_id);
    echo $packet;
    ?>
    

    This example will produce:

    <wddxPacket version='1.0'><header comment='PHP'/><data><struct>
    <var name='pi'><number>3.1415926</number></var><var name='cities'>
    <array length='3'><string>Austin</string><string>Novato</string>
    <string>Seattle</string></array></var></struct></data></wddxPacket>
    

    Note:

    If you want to serialize non-ASCII characters you have to convert your data to UTF-8 first (see utf8_encode() and iconv()).