如何使用导入包(JsonRpc)
How to use imported packages (JsonRpc)
我正在尝试使用 Laravel 5.0 中的 JsonRpc 包来访问比特币 RPC 命令。至此,我已经通过composer成功安装了JsonRpc的dev-master分支;生成了自动加载文件并设法查看了 vendor 文件夹下的 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');
}
}
为了验证,我正在尝试访问位于 Client.php 内部的“jsonRPCClient”函数。文件的位置和结构如下:
project-root\vendor\jsonrpc\jsonrpc\src\JsonRpc\Base\Client.php
然而,这似乎不是在 Laravel 5 中访问导入模块的方式,而是 Laravel 试图找到一个名为 'JsonRpc' 的控制器,这样做会抛出错误此异常表示找不到控制器:
FatalErrorException in PoolController.php line 9:
Class 'App\Http\Controllers\JsonRpc' not found
所以,我的问题是,如何在 Laravel 5.0 中使用外部 composer 安装包?
在您的代码中,JsonRpc
在当前命名空间 (App\Http\Controllers) 下,因此 '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
}
}
对于 PSR 自动加载,您不需要将整个供应商目录路径作为命名空间的一部分。如果查看 vendor\jsonrpc\jsonrpc\src\JsonRpc\Base\Client.php
文件,您会看到文件开头的名称空间声明是 namespace JsonRpc;
。所以你只需要使用那个命名空间和 class 名称:
use JsonRpc\Client;
并像这样实例化 class:
$bitcoind = Client('http://username:password@localhost:8332/');
或者只是使用完整的 class 命名空间实例化它(这意味着不需要 use
语句):
$bitcoind = \JsonRpc\Client('http://username:password@localhost:8332/');
中阅读有关命名空间如何工作的更多信息
我正在尝试使用 Laravel 5.0 中的 JsonRpc 包来访问比特币 RPC 命令。至此,我已经通过composer成功安装了JsonRpc的dev-master分支;生成了自动加载文件并设法查看了 vendor 文件夹下的 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');
}
}
为了验证,我正在尝试访问位于 Client.php 内部的“jsonRPCClient”函数。文件的位置和结构如下:
project-root\vendor\jsonrpc\jsonrpc\src\JsonRpc\Base\Client.php
然而,这似乎不是在 Laravel 5 中访问导入模块的方式,而是 Laravel 试图找到一个名为 'JsonRpc' 的控制器,这样做会抛出错误此异常表示找不到控制器:
FatalErrorException in PoolController.php line 9:
Class 'App\Http\Controllers\JsonRpc' not found
所以,我的问题是,如何在 Laravel 5.0 中使用外部 composer 安装包?
在您的代码中,JsonRpc
在当前命名空间 (App\Http\Controllers) 下,因此 '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
}
}
对于 PSR 自动加载,您不需要将整个供应商目录路径作为命名空间的一部分。如果查看 vendor\jsonrpc\jsonrpc\src\JsonRpc\Base\Client.php
文件,您会看到文件开头的名称空间声明是 namespace JsonRpc;
。所以你只需要使用那个命名空间和 class 名称:
use JsonRpc\Client;
并像这样实例化 class:
$bitcoind = Client('http://username:password@localhost:8332/');
或者只是使用完整的 class 命名空间实例化它(这意味着不需要 use
语句):
$bitcoind = \JsonRpc\Client('http://username:password@localhost:8332/');
中阅读有关命名空间如何工作的更多信息