clue/qdatastream

轻量级的PHP库,允许与Qt程序(QDataStream)交换二进制数据

v0.8.0 2019-03-03 20:33 UTC

This package is auto-updated.

Last update: 2024-09-08 03:31:26 UTC


README

CI status installs on Packagist

轻量级的PHP库,允许与Qt程序(QDataStream)交换二进制数据

目录

用法

作者

使用 Writer 类可以从您写入的结构化数据构建二进制缓冲区字符串。

$user = new stdClass;
$user->id = 10;
$user->active = true;
$user->name = 'Alice';

$writer = new Writer();
$writer->writeUInt($user->id);
$writer->writeBool($user->active);
$writer->writeQString($user->name);

$data = (string)$writer
file_put_contents('user.dat', $data);

有关更多详细信息,请参阅类概述

读取器

使用 Reader 类可以读取二进制缓冲区字符串中的数据。

$data = file_get_contents('user.dat');
$reader = new Reader($data);

$user = new stdClass();
$user->id = $reader->readUInt();
$user->active = $reader->readBool();
$user->name = $reader->readQString();

有关更多详细信息,请参阅类概述

QVariant

使用 QVariant 类可以封装任何类型的数据,并具有显式的数据类型。当将 QVariant 写入缓冲区时,它还会包括其数据类型,以便在读取时可以自动完成,而无需事先知道数据类型。

$variant = new QVariant(100, Types::TYPE_USHORT);

$writer = new Writer();
$writer->writeQVariant($variant);

$data = (string)$writer;
$reader = new Reader($data);
$value = $reader->readQVariant();

assert($value === 100);

此外,您可以使用 writeQVariant() 方法而无需事先指定数据类型,并让此类“猜测”适合序列化的适当数据类型,并将此类型信息添加到序列化数据中。这类似于JSON编码,并接受类型为 intboolstringnull 以及嵌套结构或类型为 arraystdClass 的实例的原始值。

$rows = [
    (object)[
        'id' => 10,
        'name' => 'Alice',
        'active' => true,
        'groups' => ['admin', 'staff']
    ]
];

$writer = new Writer();
$writer->writeQVariant($rows);

$data = (string)$writer;
$reader = new Reader($data);
$values = $reader->readQVariant();

assert(count($values) === 1);
assert($values[0]->id === 10);
assert($values[0]->groups[0] === 'admin');

请注意,关联数组或 stdClass 对象将序列化为“映射”,而向量数组将序列化为“列表”。为了避免混淆这些类似的数据结构,在此项目中使用 stdClass 实例被认为是首选方法。

有关更多详细信息,请参阅类概述

类型

存在 Types 类是为了与不同的数据类型一起工作,并提供了一些公共常量,用于处理显式数据类型,否则主要用于内部。

有关更多详细信息,请参阅类概述

安装

建议使用 Composer 安装此库。 新到Composer?

这将安装最新支持的版本

$ composer require clue/qdatastream:^0.8

有关版本升级的详细信息,请参阅变更日志

此项目旨在在任何平台上运行,因此不需要任何PHP扩展,并支持在旧版PHP 5.3通过当前PHP 8+上运行。 强烈建议为此项目使用PHP 7+

QStringQChar 类型使用 ext-mbstring 在不同字符编码之间进行转换。如果此扩展不存在,则此库将使用略微较慢的正则表达式绕道工作,但应同样有效。强烈建议安装 ext-mbstring

测试

要运行测试套件,您首先需要克隆此存储库,然后通过 Composer 安装所有依赖项

$ composer install

要运行测试套件,请转到项目根目录并运行

$ php vendor/bin/phpunit

许可

本项目遵循宽松的MIT许可协议

你知道吗?我提供定制开发服务,并可以为发布赞助和贡献开具发票。请联系我(@clue)了解详情。