nbobtc/bitcoind-php

用于与bitcoind守护进程交互的PHP包装器

2.1.0 2017-12-22 14:47 UTC

This package is not auto-updated.

Last update: 2024-09-14 13:12:51 UTC


README

Code Climate Code Climate SensioLabs Insight

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

安装

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

composer require nbobtc/bitcoind-php

使用方法

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

<?php

require __DIR__ . '/vendor/autoload.php';

$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();
echo $contents;

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

由于结果以字符串形式返回,因此您可以按需解析响应。以下是一些示例!

命令

命令是以一种方式创建的,这样它将支持通过提供一个易于设置所有所需信息的类来支持比特币API的任何未来更新。

您可以将所需的 方法参数 传递到对象中。以下是一些示例

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

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

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

第二个参数必须与比特币API维基页面上的顺序相同。无需分配任何键值。

参数

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

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

大多数比特币API命令都接受一个参数。如果它接受超过一个,则必须按页面上的顺序以数组形式传递参数。

扩展命令

如果您需要扩展命令,它必须实现CommandInterface。您可以在接口中找到有关如何实现此功能的文档。

驱动程序

驱动程序用于通过连接到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(phpunit.xml.dist所在的目录),并运行测试。

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

变更日志

请参阅CHANGELOG.md

包含有关发布的信息,例如添加了什么、更改了什么等。查看它以了解版本之间的变化。

贡献

请参阅CONTRIBUTING.md

贡献到本项目的方式。

分支

master

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

2.x

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

1.x

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

许可(MIT) Packagist

版权(C)2012-2018 Joshua Estes

在此软件和相关的文档文件(“软件”)的副本(“软件”)的任何个人,免费获得此许可,可以在没有任何限制的情况下处理软件,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或出售软件副本,并允许将软件提供给他人,以便他们可以这样做,前提是遵守以下条件

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

本软件按“原样”提供,没有任何明示或暗示的保证,包括但不限于适销性、特定用途适用性和非侵权性保证。在任何情况下,作者或版权所有者均不对任何索赔、损害或其他责任承担责任,无论此类责任源于合同、侵权或其他方式,无论源于、源自或与软件或软件的使用或其他操作相关。