如何使用导入的包(JsonRpc)

时间:2015-02-27 21:10:59

标签: php laravel composer-php packages laravel-5

我正在尝试使用 Laravel 5.0 中的 JsonRpc 包来访问比特币RPC命令。到目前为止,我已经通过composer成功安装了JsonRpc的dev-master分支;生成自动加载文件,并设法查看供应商文件夹下的jsonrpc文件夹。

所以,我现在正试图从名为' PoolController.php '的控制器访问该软件包。这是我试图用来实现这个目的的代码:

<?php namespace App\Http\Controllers;

use vendor\JsonRpc\JsonRpc\src\JsonRpc\client;

class PoolController extends Controller {

    public function index()
    {
        $bitcoind = JsonRpc::jsonRPCClient('http://username:password@localhost:8332/');
        $balance = $bitcoind->getbalance("");
        return view('pool');
    }

}

要验证,我正在尝试访问&#39; jsonRPCClient &#39;函数位于Client.php内部。文件的位置和结构如下:

project-root\vendor\jsonrpc\jsonrpc\src\JsonRpc\Base\Client.php

然而,这似乎不是在Laravel 5中访问导入模块的方法,而是Laravel正试图找到一个名为&#39; JsonRpc&#39;并且这样做会抛出这个异常,说无法找到控制器:

FatalErrorException in PoolController.php line 9:
Class 'App\Http\Controllers\JsonRpc' not found

所以,我的问题是,如何在Laravel 5.0中使用外部编写器安装的软件包?

2 个答案:

答案 0 :(得分:1)

对于PSR自动加载,您不需要将整个供应商目录路径包含在命名空间中。如果查看vendor\jsonrpc\jsonrpc\src\JsonRpc\Base\Client.php文件,您会看到文件开头的名称空间声明为namespace JsonRpc;。所以你需要使用的是名称空间和类名:

use JsonRpc\Client;

并像这样实例化这个类:

$bitcoind = Client('http://username:password@localhost:8332/');

或者只是使用完整的类命名空间来实例化它(这意味着不需要use语句):

$bitcoind = \JsonRpc\Client('http://username:password@localhost:8332/');

您可以在PHP Namespaces Documentation中详细了解名称空间的工作原理。

答案 1 :(得分:0)

在您的代码中,当前命名空间(App \ Http \ Controllers)下的JsonRpc'App\Http\Controllers\JsonRpc' not found

像这样导入包:

<?php namespace App\Http\Controllers;

use JsonRpc\Client as JsonRpcClient;

class PoolController extends Controller {

    public function index()
    {
        $client = new JsonRpcClient($url);
        $client->call('method', array($param1, $param2));
        # your code
    }

}