web-dev-qa-db-ja.com

クラス 'GuzzleHttp \ Client'が見つかりません

Guzzle とCodeigniter3.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>

これは私が得ているエラーです

A PHPエラーが発生しました重大度:エラーメッセージ:クラス 'GuzzleHttp\Client'が見つかりませんファイル名:controllers/hello.php行番号:22バックトレース:

8
user2115154

application/config/config.php

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

それは私にとってはうまくいきます

6
aitbella

必要に応じてコントローラーメソッドにロードするか、必要に応じて自動ロードする必要があります。私は前者を使用します:最初に:アプリケーションフォルダにcomposerを使用してインストールします:

composer require guzzlehttp/guzzle:~6.0

2番目:CIを自動ロードさせますcomposer(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変数に応答があります。残りについては、ドキュメントを確認してください。それ以外の場合は、 CodeIgniter-cURL または Requests のようなhttpリクエストに「よりフレンドリーな」メソッド/ライブラリを使用します

4
wiZZmnma

.phpファイルの先頭に次の命令を追加することを解決しました。

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

しかし、それが良い習慣かどうかはわかりません...

0
bluish