ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
## 6.3.1 使用说明 将框架目录下的 ./SDK/PHP/PhalApiClient 目录中的全部代码拷贝到项目里面即可使用。 ## 6.3.2 代码示例 如下是使用的代码场景片段。 首先,我们需要导入SDK包: ```javascript <?php require_once dirname(__FILE__) . '/PhalApiClient.php'; $client = PhalApiClient::create() ->withHost('http://demo.phalapi.net/'); $rs = $client->reset() ->withService('Default.Index') ->withParams('username', 'dogstar') ->withTimeout(3000) ->request(); var_dump($rs->getRet()); echo "\n"; var_dump($rs->getData()); echo "\n"; var_dump($rs->getMsg()); ``` ## 6.3.3 运行效果 运行后,可以看到: ```javascript int(200) array(4) { ["title"]=> string(12) "Hello World!" ["content"]=> string(36) "dogstar您好,欢迎使用PhalApi!" ["version"]=> string(5) "1.2.1" ["time"]=> int(1444925238) } string(0) "" ``` ## 6.3.4 更多调用 当需要重复调用时,需要先进行 **重置操作** ,如: ```javascript //one more time $rs = $client->reset() ->withService("User.GetBaseInfo") ->withParams("user_id", "1") ->request(); var_dump($rs->getRet()); echo "\n"; var_dump($rs->getData()); echo "\n"; var_dump($rs->getMsg()); ``` 当请求有异常时,返回的 ret!= 200,如: ```javascript //illegal request $rs = $client->reset() ->withService("XXX.XXXXX") ->withParams("user_id", "1") ->request(); var_dump($rs->getRet()); echo "\n"; var_dump($rs->getData()); echo "\n"; var_dump($rs->getMsg()); ``` 以上的输出为: ```javascript -------------------- int(200) array(3) { ["code"]=> int(0) ["msg"]=> string(0) "" ["info"]=> array(3) { ["id"]=> string(1) "1" ["name"]=> string(7) "dogstar" ["from"]=> string(7) "oschina" } } string(0) "" -------------------- int(400) array(0) { } string(45) "非法请求:接口服务XXX.XXXXX不存在" ``` ## 6.3.5 扩展你的过滤器和结果解析器 ### (1)扩展过滤器 当服务端接口需要接口签名验证,或者接口参数加密传送,或者压缩传送时,可以实现此过滤器,以便和服务端操持一致。 当需要扩展时,分两步。首先,需要实现过滤器接口: ```javascript <?php class MyFilter implements PhalApiClientFilter { public function filter($service, array &$params) { //TODO ... } } ``` 然后设置过滤器: ```javascript <?php $rs = PhalApiClient.create() .withHost("http://demo.phalapi.net/") .withFilter(new MyFilter()) // ... .request(); ``` ### (2)扩展结果解析器 当返回的接口结果不是JSON格式时,可以重新实现此接口。 当需要扩展时,同样分两步。类似过滤器扩展,这里不再赘述。