opensourcewebsite-org/php-stellar-sdk

PHP 语言的Stellar Horizon客户端库

v0.7.0 2018-09-22 20:21 UTC

This package is auto-updated.

Last update: 2024-09-28 16:10:19 UTC


README

License PHP Version

PHP Stellar SDK提供了构建和签名交易、连接和查询Stellar Horizon服务器的API。

该库正在积极开发中,应被视为Beta版本。请确保您已在测试网络上进行了充分测试,并在代码的其他地方添加了健全性检查。

该存储库是OpenSourceWebsite组织的一部分。本项目以及所有参与其中的人都受到行为准则的约束。

入门

查看发行说明以了解重大更改.

请参阅入门目录中的该库使用示例。更多示例可在示例目录中找到。

请阅读Stellar API文档Stellar Testnet文档

贡献

请阅读我们的贡献指南

安装

安装此扩展的首选方式是通过composer

运行以下命令:

composer require opensourcewebsite-org/php-stellar-sdk

或者

"opensourcewebsite-org/php-stellar-sdk": "*"

将以下内容添加到您的composer.json文件的require部分。

使用

大整数支持

在64位平台上,PHP的最大整数是64位的。这对于处理大额转账尤其重要。单个XLM(1 XLM)的原生表示是10000000 stroops。

因此,如果您尝试使用MAX_INT数量的XLM(或自定义资产),在值转换为stroops并发送到网络时,可能会超出PHP的整数类型。

该库尝试为此场景添加检查,并使用BigInteger类来解决这个问题。

如果您的应用程序使用大量XLM或自定义资产,请对大值进行广泛测试,并在可能的情况下使用StellarAmount辅助类或BigInteger类。

浮点问题

尽管这并非特定于Stellar或PHP,但在比较浮点数时需要注意问题。

例如

$oldBalance = 1.605;
$newBalance = 1.61;

var_dump($oldBalance + 0.005);
var_dump($newBalance);
if ($oldBalance + 0.005 === $newBalance) {
    print "Equal\n";
}
else {
    print "Not Equal\n";
}

上面的代码认为这两个值不相等,尽管打印出了相同的值

输出

float(1.61)
float(1.61)
Not Equal

为了解决这个问题,始终以整数形式处理和存储金额,表示stroops。只有当您需要向用户显示余额时,才将其转换回十进制数字。

可以使用静态属性StellarAmount::STROOP_SCALE来帮助进行此转换。

测试

$ composer test

反馈

若要请求新功能、提交错误报告、提供反馈、开始设计讨论或有改进此代码的想法,请随意创建一个issue,或创建一个pull request

请将所有安全问题发送到security@opensourcewebsite.org

许可证

本项目为开源项目,在MIT许可证下免费提供。