我尝试使用Guzzle 6使用REST API。我阅读了Guzzle的文档,并获得了使用REST API的方法,如下所示:
<?php
class Index extends CI_Controller {
use GuzzleHttp\Client;
$client = new Client([
'base_uri' => 'https://api.rajaongkir.com/basic/'
]); //LINE ERROR
public function __construct() {
parent::__construct();
$this->load->helper('url');
}
function index() {
// $client = new GuzzleHttp\Client(['base_uri' => 'https://api.rajaongkir.com/basic/']);
$key = "b5231ee43b8ee75764bd6a289c4c576d";
$response = $client->request('GET','province?key='.$key);
$data['data'] = json_decode($response->getBody());
$this->load->view('index', $data);
}
}
如果我在函数index()中声明变量 $ client ,则没有问题。我得到了JSON,并成功显示在视图中。 我只想声明一次 base uri 和 key ,就可以对所有功能使用 base uri 和 key 有。
因此,我尝试声明包含 base uri 和 key 作为全局变量的变量。但是我在 $ client 行中出错。错误是:
语法错误,意外的'$ client'(T_VARIABLE),预期函数(T_FUNCTION)或const(T_CONST)
如何解决?我的代码有什么问题?
答案 0 :(得分:0)
您不能直接在类定义中编写任何代码。 您需要定义类变量(字段)并在构造函数中创建类的实例,例如:
class Index extends CI_Controller {
use GuzzleHttp\Client;
protected $client;
public function __construct() {
parent::__construct();
$this->load->helper('url');
$this->client = new Client([
'base_uri' => 'https://api.rajaongkir.com/basic/'
]); //LINE ERROR
}
function index() {
// $client = new GuzzleHttp\Client(['base_uri' => 'https://api.rajaongkir.com/basic/']);
$key = "b5231ee43b8ee75764bd6a289c4c576d";
$response = $client->request('GET','province?key='.$key);
$data['data'] = json_decode($response->getBody());
$this->load->view('index', $data);
}
}