oprokidnev/bitcoind-php

bitcoind守护进程的PHP包装器

2.0.2 2015-05-27 19:56 UTC

This package is auto-updated.

Last update: 2024-09-22 01:46:34 UTC


README

Code Climate Code Climate SensioLabs Insight

此项目用于与名为bitcoind的无头比特币程序进行交互。它还包含各种实用类,用于PHP开发者处理比特币。

安装

您可以使用Composer安装此库。您还可以在Packagist上查看更多关于此的信息。

将此添加到您的composer.json文件中的require部分。

{
    "require": {
        "nbobtc/bitcoind-php": "~2.0"
    }
}

用法

要使用此项目,只需创建一个新的类实例。

$command = new \Nbobtc\Command\Command('getinfo');
$client  = new \Nbobtc\Http\Client('https://username:password@localhost:18332');

/** @var \Nbobtc\Http\Message\Response */
$response = $client->sendCommand($command);

/** @var string */
$contents = $response->getBody()->getContents();

您可以使用正确的getter:getRequest()getResponse()从客户端获取RequestResponse对象。

由于结果以字符串形式返回,因此您可以按照自己的意愿解析响应。下面有一些想法!

命令

命令是以一种方式创建的,这样就可以通过提供设置所有必需信息的简单类来支持Bitcoin API的任何未来更新。

您可以将method和所需的parameters传递给对象。以下是一些示例

// No Parameters
$command = new Command('getinfo');

// One Parameter
$command = new Command('getblock', '000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f');

// Multiple Parameters
$command = new Command('sendfrom', array('fromaccount', 'tobitcoinaddress', 'amount'));

第二个参数必须与Bitcoin API wiki页面上的顺序相同。不需要为值分配任何键。

参数

参数是在创建新命令时提供的第二个参数。此参数可以是字符串或数组。例如,这两个都是有效的。

$command = new Command('getblock', array('000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f'));
$command = new Command('getblock', '000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f');

大多数Bitcoin API命令只接受一个参数。如果需要接受多个参数,则必须按该页面上的顺序以数组的形式传递参数。

扩展命令

如果出于任何原因需要扩展命令,则必须实现CommandInterface。您可以在接口内找到有关如何实现的文档。

驱动程序

驱动程序由ClientInterface用于连接到bitcoind服务并发送请求。它们返回响应。如果您需要实现新的驱动程序,请查看DriverInterface

cURL驱动程序

这是默认使用的,允许您根据需要对其进行大量自定义。

您可以通过将它们传递到函数addCurlOption($option, $value)中来设置各种cURL选项

以下是配置和使用驱动程序的一个示例。

$driver = new \Nbobtc\Http\Driver\CurlDriver();
$driver
    ->addCurlOption(CURLOPT_VERBOSE, true)
    ->addCurlOption(CURLOPT_STDERR, '/var/logs/curl.err');

$client = new \Nbobtc\Http\Client('https://username:password@localhost:18332');
$client->withDriver($driver);

请随意查看CurlDriver的源代码。

食谱

如何启用Keep-Alive(即持久连接)

此示例显示了如何将客户端配置为持久连接

$client = new \Nbobtc\Http\Client('https://username:password@localhost:18332');
$client->getRequest()->withHeader('Connection', 'Keep-Alive');

如何设置CA证书

此库提供了一些很好的灵活性,允许您配置客户端以使用自己的CA证书。

$driver = new \Nbobtc\Http\Driver\CurlDriver();
$driver->addCurlOption(CURLOPT_CAINFO, '/path/to/cert');

$client = new \Nbobtc\Http\Client('https://username:password@localhost:18332');
$client->withDriver($driver);

如何将输出转换为数组

有些人喜欢数组

$response = $client->sendCommand($command);
$output   = json_decode($response->getBody()->getContents(), true);

如何将输出转换为stdClass对象

有些人喜欢对象

$response = $client->sendCommand($command);
$output   = json_decode($response->getBody()->getContents());

测试

所有测试均使用PHPUnit进行。您应该在项目的根目录(即phpunit.xml.dist所在的目录)中运行phpunit,测试将自动运行。

如果您要提交拉取请求或在此库上工作,请确保测试能够通过。

变更日志

请参阅CHANGELOG.md

包含有关版本信息的内容,例如添加了什么、有哪些更改等。查看它以了解从版本到版本的变化情况。

贡献

请参阅CONTRIBUTING.md

贡献此项目的各种方式。

分支

master

这是最新和最好的,不应使用,它被视为用于测试新功能和功能的开发。不应在生产环境中使用。

2.x

当前生产分支。所有2.x标签都从此分支生成。

1.x

已弃用,仅用于修复错误和记录历史。

发布

您可以在GitHub上找到发布的完整列表。

清单

  • 使用新小版本或补丁增加更新composer.json
  • 更新README.md,包含新版本的安装说明。
  • CHANGELOG.md中更新发布信息,并删除未发布部分。
  • 创建标签并将标签推送到远程。
  • CHANGELOG.md中与发布相关的部分复制到GitHub上的发布文档中。
  • CHANGELOG.md中更新未发布部分

许可协议(MIT) Packagist

版权(C)2012-2014 Joshua Estes

在此软件及其相关文档文件(“软件”)的副本中,任何个人均可免费获得,用于处理软件,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或销售软件副本,并允许向软件提供者提供软件的个人这样做,前提是遵守以下条件

上述版权声明和本许可声明应包含在软件的所有副本或主要部分中。

本软件按“现状”提供,不提供任何形式的保证,明示或暗示,包括但不限于对适销性、适用于特定目的和非侵权的保证。在任何情况下,作者或版权所有者均不对任何索赔、损害或其他责任负责,无论这些责任是因合同、侵权或其他方式产生的,无论是否与软件或软件的使用或其他方式有关。