Как использовать импортированные пакеты (JsonRpc)

Я пытаюсь использовать JsonRpc пакет в Laravel 5.0 для доступа к командам биткойн-RPC. До сих пор я успешно установил ветку dev-master JsonRpc через composer; сгенерировал файлы автозагрузки и смог просмотреть папку jsonrpc в папке vendor.

Итак, я сейчас пытаюсь получить доступ к пакету из контроллера с именем ‘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');
}

}

Чтобы проверить, я пытаюсь получить доступ кjsonRPCClient‘функция расположена внутри Client.php. Расположение и структура файла следующие:

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?

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.

1

Другие решения

В вашем коде 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
}

}
0

По вопросам рекламы [email protected]