我正在尝试使用Laravel 5.0中的JsonRpc包来访问比特币RPC命令。到目前为止,我已经通过composer成功安装了JsonRpc的dev-master分支;生成了自动加载文件,并设法查看了vendor文件夹下的jsonrpc文件夹。
因此,我现在正试图从名为"PoolController.php"的控制器访问包。这是我试图用来实现这一点的代码:
<?php namespace AppHttpControllers;
use vendorJsonRpcJsonRpcsrcJsonRpcclient;
class PoolController extends Controller {
public function index()
{
$bitcoind = JsonRpc::jsonRPCClient('http://username:password@localhost:8332/');
$balance = $bitcoind->getbalance("");
return view('pool');
}
}
为了验证,我正在尝试访问Client.php中的"jsonRPCClient"函数。文件的位置和结构如下:
project-rootvendorjsonrpcjsonrpcsrcJsonRpcBaseClient.php
然而,这似乎不是访问Laravel 5中导入模块的方式,相反,Laravel正试图找到一个名为"JsonRpc"的控制器,并在这样做的过程中抛出了这个异常,称找不到控制器:
FatalErrorException in PoolController.php line 9:
Class 'AppHttpControllersJsonRpc' not found
所以,我的问题是,如何在Laravel 5.0中使用外部安装的composer包?
对于PSR自动加载,您不需要将整个供应商目录路径作为命名空间的一部分。如果查看vendorjsonrpcjsonrpcsrcJsonRpcBaseClient.php
文件,您将看到文件开头的名称空间声明是namespace JsonRpc;
。所以你只需要使用这个名称空间和类名:
use JsonRpcClient;
并像这样实例化类:
$bitcoind = Client('http://username:password@localhost:8332/');
或者使用完整的类名称空间实例化它(这意味着不需要use
语句):
$bitcoind = JsonRpcClient('http://username:password@localhost:8332/');
您可以在PHP命名空间文档中阅读更多关于命名空间如何工作的信息。
在您的代码中,当前命名空间(App\Http\Controllers)下的JsonRpc
,因此为'AppHttpControllersJsonRpc' not found
。
像这样导入包:
<?php namespace AppHttpControllers;
use JsonRpcClient as JsonRpcClient;
class PoolController extends Controller {
public function index()
{
$client = new JsonRpcClient($url);
$client->call('method', array($param1, $param2));
# your code
}
}