diadal / bitcoind-php
PHP 对 bitcoind 守护进程的封装
Requires
- php: >=5.4
- laminas/laminas-diactoros: ^2.2
This package is auto-updated.
Last update: 2024-09-13 16:04:10 UTC
README
该项目用于与名为 bitcoind 的无头比特币程序进行交互。它还包含各种实用类,供 PHP 开发者使用比特币。
安装
您可以使用 Composer 安装此库。您还可以在 Packagist 上查看更多信息。
composer require diadal/bitcoind-php
使用方法
要使用此项目,您只需创建一个类的新实例。
<?php require __DIR__ . '/vendor/autoload.php'; $command = new \Diadal\Command\Command('getinfo'); $client = new \Diadal\Http\Client('https://username:password@localhost:18332'); /** @var \Diadal\Http\Message\Response */ $response = $client->sendCommand($command); /** @var string */ $contents = $response->getBody()->getContents(); echo $contents;
您可以使用正确的获取器(getRequest()
和 getResponse()
)从客户端获取 Request 和 Response 对象。
由于结果以字符串形式返回给您,因此您可以随意解析响应。以下是一些想法!
命令
命令以支持 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。您可以在接口中找到有关如何实现此接口的文档。
驱动程序
驱动程序用于通过连接到 bitcoind 服务并发送请求与 ClientInterface 通信。它返回一个响应。如果您需要实现新的驱动程序,请参阅 DriverInterface。
cURL 驱动程序
这是默认使用的,允许您根据自己的需要对其进行大量自定义。
您可以通过传递到函数 addCurlOption($option, $value)
中的选项来设置各种 cURL 选项。
以下是如何配置和使用驱动程序的示例。
$driver = new \Diadal\Http\Driver\CurlDriver(); $driver ->addCurlOption(CURLOPT_VERBOSE, true) ->addCurlOption(CURLOPT_STDERR, '/var/logs/curl.err'); $client = new \Diadal\Http\Client('https://username:password@localhost:18332'); $client->withDriver($driver);
您可以自由查看 CurlDriver
的源代码。
食谱
如何启用 Keep-Alive(持久连接)
此示例展示了如何设置客户端以启用 持久连接。
$client = new \Diadal\Http\Client('https://username:password@localhost:18332'); $client->getRequest()->withHeader('Connection', 'Keep-Alive');
如何设置 CA 证书
此库提供了一些灵活性,允许您配置客户端使用您自己的 CA 证书。
$driver = new \Diadal\Http\Driver\CurlDriver(); $driver->addCurlOption(CURLOPT_CAINFO, '/path/to/cert'); $client = new \Diadal\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。
包含有关发布的信息,例如添加了什么,有何变更等。查看它以了解版本之间的变化。
贡献
关于如何为此项目做出贡献的各种方法。
分支
master
这是最新和最好的版本,不应该使用,它被视为用于测试新功能和功能的开发版本。此版本不应该在生产环境中使用。
2.x
当前生产分支。所有2.x标签都来自此分支。
1.x
已弃用,仅用于修复错误和记录历史。
许可证 (MIT) 
版权所有 (C) 2012-2018 Joshua Estes
特此免费授予任何获得此软件及其相关文档文件(以下简称“软件”)副本的任何人,使用软件的权利,不受限制,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或销售软件副本的权利,并允许向软件提供的人士按以下条件进行操作
上述版权声明和本许可声明应包含在软件的任何副本或主要部分中。
软件按“原样”提供,不提供任何明示或暗示的保证,包括但不限于适销性、特定用途适用性和非侵权性保证。在任何情况下,作者或版权所有者不对任何索赔、损害或其他责任负责,无论此类索赔、损害或其他责任是由于合同、侵权或其他行为引起的,无论是由于软件或软件的使用或任何其他原因。