本日福哥会带着大家实现接口掌握器的逻辑以及它和路由模块的结合部分的逻辑,实现了这部分功能之后,就可以开拓相应AJAX要求的接口了。
接口掌握器一样平常情形下是采取JSON作为传输数据的格式的,以是这里面会用到php自带的两个函数json_encode和json_decode。当然,除了JSON格式外,接口还会有XML数据格式以及自定义文本格式。个中XML数据格式是比较老旧的数据格式,操为难刁难象比较繁芜,传输效率也不高我们就不先容了。再有便是自定义文本格式,这个会根据一些项目的须要自定义一些分外的格式,如果是这种情形就须要建立专用的掌握器来供应支持,本文亦不先容了。
接口掌握器Controller/API/TFController,在这个工具里面会完成用户要求处理,用户内容相应等等功能。

掌握器目录
我们建立一个用于展示接口掌握器的示例接口程序,程序文件保存在WEB-INF/Controller/api/member/status.inc.php里面,用来显示当前用户的状态信息。
代码
TFController
response
protectedfunctionresponse(int$code,string$msg,int$httpCode=null,string$httpMsg=null,string$charset=null){if($httpCode==null){$httpCode=200;}if($httpMsg==null){$httpMsg="OK";}$charset=strtoupper($charset);if($charset==null){$charset="UTF-8";}//headerheader('HTTP/1.1'.$httpCode.''.$httpMsg);header('Content-Type:application/json');//data$statData=array('errcode'=>$code,'errmsg'=>$msg,);$this->data=array_merge($statData,$this->data);echojson_encode($this->data);}
process
protectedfunctionprocess():?array{returnnull;}
load
publicfunctionload($uri,$extension,$mappingFilePath){$this->data=$this->process();if($this->data!==null){$this->response(200,"OK");}else{$this->response(500,"InternalServerError");}}
示例
掌握器程序
useTFPHP\Controller\API\TFController;classAPIControllerextendsTFController{protectedfunctionprocess():?array{returnarray('user'=>array('userid'=>123456,'username'=>"福哥",));}}
讲解
下面福哥来讲解一下接口掌握器Controller/API/TFController的函数的逻辑。
TFController
response
这个方法是接口掌握器的核心方法,它卖力将process方法处理后的数据转换成JSON数据格式后显示到用户面前。
这个方法包括一个$errcode和一个$errmsg,可以自定义返回接口的状态码和。
这个方法还可以自定义HTTP的状态码和,通过$httpCode和$httpMsg掌握。
还有一个$charset可以设置返回数据的编码格式,但是福哥暂时没有实现它,往后再说哈~~
process
这个方法是一个空方法,是给掌握器程序文件重载的一个保护方法,它用来实现详细掌握器程序的业务逻辑。
load
这个方法是给路由模块进行自动调用的,它卖力掌握器程序的加载操作。
示例
掌握器程序
这是一个接口的示例程序,我们通过process方法直接返回了一个数组数据。
总结
本日我们接口掌握器的逻辑实现。现在通过TFPHP就可以制作接口程序了。
到目前为止,我们的TFPHP已经实现了路由模块和掌握器模块,剩下的模型模块是最为繁芜的一个模块,它涉及到数据库连接、实体工具、OOP编程等等一系列的内容。
下一课,福哥会带着童鞋们理解模型模块的事理,以及干系的知识和技能。
P.S.微信"大众号的文章发出去之后是不能编辑的,但是福哥偶尔会修复一些描述不到位、示例禁绝确、构造不清晰等等的文章缺点,这些只能在网站上才能看到最新版本内容,望大家知晓~~
https://m.tongfu.net/home/35/blog/512843.html