无法使用composer vendor作为codeigniter库

时间:2018-04-14 19:58:46

标签: php codeigniter codeigniter-3

我正在尝试使用composer和codeigniter来使用此( enter image description here )库。但我收到了以下错误:

Type: Error

Message: Class 'GuzzleClient' not found

Filename: /var/www/html/test/application/libraries/Ethereum.php

Line Number: 7

以下是我的图书馆代码:

<?php

class Ethereum
{
    public function __construct()
    {
        $httpClient = new GuzzleClient(new GuzzleClientFactory(), 'localhost', 8545);
        $client     = new Client($httpClient);

        return $client;
    }

}

由于其他依赖项工作正常,因此Composer很受欢迎。无法找出问题所在。请帮忙

1 个答案:

答案 0 :(得分:0)

使用Composer时,您通常必须包含autoload.php文件。您还需要为Composer依赖项使用名称空间。

通常vendor目录与application处于同一级别,因此定义一个指向供应商目录的常量非常方便。

define('VENDOR', substr(FCPATH, 0, strpos(APPPATH, 'application/')) . "vendor/");

您的图书馆可能需要看起来更像这样。

<?php
require VENDOR . 'autoload.php';

//I'm not certain this is the correct namespace but hopefully you get the idea
use Achse\GethJsonRpcPhpClient; 

class Ethereum
{
    protected $httpClient;
    protected $client;

    public function __construct()
    {
        $this->httpClient = new GuzzleClient(new GuzzleClientFactory(), 'localhost', 8545);
        $this->client     = new Client($httpClient);
    }

    //example using the class property $client
    public getResult()
    {
        return $this->client->callMethod('eth_getBalance', ['0xf99ce9c17d0b4f5dfcf663b16c95b96fd47fc8ba', 'latest']);
    }
}