这是一个只读镜像,本仓库仅作为 Composer 包的发布源,如有問題,请在主仓库的 Issues 中提交
请勿直接向此仓库提交任何代码!
- 本仓库的所有代码,均通过自动化脚本从主仓库
metamessage/metamessage的/mm-php目录单向同步而来。 - 任何直接提交到本仓库的 Pull Request 或推送,都会被强制拒绝。
如果你需要修改 PHP SDK 的代码,请遵循以下流程:
- 克隆主仓库:
git clone https://github.com/metamessage/metamessage.git
cd metamessage/mm-php-
在
mm-php目录下完成开发和测试。 -
将你的改动提交到主仓库
-
本镜像仓库会通过 GitHub Actions 等方式自动同步主仓库的变更。
将以下依赖添加到你的 composer.json 文件中:
{
"require": {
"metamessage/metamessage": "1.0.0"
}
}然后运行:
composer install- PHP 7.4 或更高版本
use io\metamessage\mm\MetaMessage;class Person {
public $name = "Ed";
public $age = 30;
}$person = new Person();
$wire = MetaMessage::encode($person);
echo "Encoded: " . bin2hex(implode(array_map('chr', $wire))) . "\n";$decoded = MetaMessage::decode($wire, Person::class);
echo "Decoded: Name={$decoded->name}, Age={$decoded->age}\n";use io\metamessage\jsonc\Jsonc;
$jsonc = '{
// mm: type=str; desc=姓名
"name": "Alice",
// mm: type=i; desc=年龄
"age": 25
}';
// 解析 JSONC
$node = Jsonc::parseFromString($jsonc);
// 绑定到对象
$person = Jsonc::bindFromString($jsonc, Person::class);# 在 mm-php 目录下运行
composer test- PHPUnit
- 编码测试
- 解码测试
- JSONC 解析测试
- 绑定测试
- 问题: Composer 依赖安装失败 解决: 检查网络连接,或使用 Composer 镜像
- 问题: 编码/解码失败 解决: 检查类定义是否正确,属性是否可访问
查看 https://github.com/metamessage/metamessage/examples/php/ 目录下的示例代码:
basic/- 基本使用示例jsonc-to-wire/- JSONC 转 Wire 格式wire-to-jsonc/- Wire 格式转 JSONCbind-object/- 对象绑定示例