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バックトレース:
application/config/config.php
$ config ['composer_autoload'] = FCPATH.'vendor/autoload.php ';
それは私にとってはうまくいきます
必要に応じてコントローラーメソッドにロードするか、必要に応じて自動ロードする必要があります。私は前者を使用します:最初に:アプリケーションフォルダに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リクエストに「よりフレンドリーな」メソッド/ライブラリを使用します
.phpファイルの先頭に次の命令を追加することを解決しました。
require 'C:/php/vendor/autoload.php';
しかし、それが良い習慣かどうかはわかりません...