Class' GuzzleHttp \ Client'未找到

时间:2015-03-31 18:42:47

标签: php codeigniter guzzle

我第一次使用BOTH Guzzle和Codeigniter 3.0。我也承认我第一次使用php命名空间。

我试图根据文档中提供的示例使用Guzzle进行非常简单的get请求。 (Guzzle文档没有提及codeigniter)。

Guzzle文件位于application / class / guzzle

这是我非常简单的控制器

public function indey () {

        $data = array();
        $data['main_content'] = "hiview";
        $data['title'] = "Data Analyzer - Welcome";
        $data['xas'] = $this->guzzler();
        $this->load->view('template', $data);
    }

    private function guzzler() {
        $client = new GuzzleHttp\Client;
        $response = $client->get('http://guzzlephp.org');
        return $response;
    }

这是我的简单观点

    <div class="row">
        <div class="col-xs-12">
             <h1>Hi</h1>
        </div>
    </div>
    <div class="row">
        <div class="col-xs-12">
            <h1><?php var_dump($xas); ?></h1>
        </div>
    </div>

这是我得到的错误

遇到了PHP错误 严重性:错误 消息:找不到类'GuzzleHttp \ Client' 文件名:controllers / hello.php 行号:22 回溯:

3 个答案:

答案 0 :(得分:4)

您应该根据需要在控制器方法中加载它,或者根据需要自动加载它。我使用前者: 首先:使用在应用程序文件夹中使用composer安装它:

composer require guzzlehttp/guzzle:~6.0

第二:让CI自动加载作曲家(applications / config / config.php)

$config['composer_autoload'] = TRUE;

然后在您的控制器中

 public function guzzler_get($url, $uri)
{    
    $client = new GuzzleHttp\Client(['base_uri' => $url]);
    $response = $client->get($uri);
    // print_r($response); // print out response

    // print out headers: 
    // foreach ($response->getHeaders() as $name => $values) {
    //    echo $name . ': ' . implode(', ', $values) . "\r\n";
    // }
    return $response;
}

使用:

$your_var = $this->guzzler_get('http://httpbin.org', '/html');

您现在在$your_var变量中有响应。其余的,请查看文档。否则请使用友好的&#34;您的http请求的方法/库,例如CodeIgniter-cURLRequests

答案 1 :(得分:4)

application/config/config.php

$config['composer_autoload'] = FCPATH.'vendor/autoload.php';

它适用于我

答案 2 :(得分:0)

我解决了在.php文件开头添加以下说明的问题:

require 'C:/php/vendor/autoload.php';

但是我不确定这是一个好习惯...