ThinkPHP内置jsonRPC的缺陷分析
发布时间:2019-12-27 11:14

本文较为具体的剖析了thinkphp内置jsonrpc的缺点。共享给我们供我们参阅。具体剖析如下:

最近在开发ios使用,要开发ios使用,当然要用到服务器,用服务器必定要选用长途调用协议,由于之前自己一向都是用php开发的,所以选用thinkphp当结构的apache服务器.

至于长途调用协议,通过考虑,仍是选用jsonrpc吧,比较简略便利,翻了一下thinkphp的手册,发现thinkphp仍是支撑jsonrpc的,这不错啊,不必自己去写了.

简略地,用thinkphp做客户端,去调用thinkphp服务器端的接口,好用.

接下来是android端,随便去网上找了个包,调用一下接口,诶!也好用,发展很顺畅.

接下来就换ios了,取github上找了个objc-jsonrpc的项目,拿来调用接口,不好用,很正常,可能是我找的项目有问题,所以我又换了一个demiurgic-json-rpc,仍是不好用,我开端对程序产生了置疑,由于web端和android端调用都没问题,所以我把焦点定位到了我的ios程序,我的天,花了我半响时刻,我硬是没找出问题,我还用ios端调用了其他人供给的jsp客户端的接口,也没问题啊.

后来,我开端看thinkphp内置的jsonrpc模块,通过不断的调试,发现了这样一行代码:
仿制代码 代码如下:$result = @call_user_func_array,$request['params'])


注意到这个函数没,call_user_func_array,array,点进去看参数阐明,公然,$request['params']有必要是数组类型,不是数组死活不认,更可恨的是,thinkphp没有对这个参数进行严厉的校验,所以都不知道怎样错的.

知道了这个原因就好办了,前面加上校验.
仿制代码 代码如下:if ) {
  $request['params'] = array_values;
} else {
  $request['params'] = array;
}
这样就完美处理了问题.







期望本文所述对我们根据thinkphp结构的php程序设计有所协助。

服务热线
4000-000-000