【问题标题】:How to use imported packages (JsonRpc)如何使用导入的包(JsonRpc)
【发布时间】:2015-04-30 17:05:11
【问题描述】:

我正在尝试使用 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-installed 包?

【问题讨论】:

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


    【解决方案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 中阅读有关命名空间如何工作的更多信息。

    【讨论】:

      【解决方案2】:

      在你的代码中,当前命名空间(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
          }
      
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多