如何利用Thinkphp框架开发移动端接口详解
2023-05-31 07:07:38 来源:互联网
(资料图)
方案一:给原生APP提供api接口
使用TP框架时 放在common文件夹下文件名就叫function.php
/***Createdbyzhangkx*Email:zkx520tnhb@163.com*Date:2015/8/1*Time:23:15*//******api开发辅助函数*******//***@paramnull$msg返回正确的提示信息*@paramflagsuccessCURD操作成功*@paramarray$data具体返回信息*Functiondescript:返回带参数,标志信息,提示信息的json数组**/functionreturnApiSuccess($msg=null,$data=array()){$result=array("flag"=>"Success","msg"=>$msg,"data"=>$data);printjson_encode($result);}/***@paramnull$msg返回具体错误的提示信息*@paramflagsuccessCURD操作失败*Functiondescript:返回标志信息‘Error",和提示信息的json数组*/functionreturnApiError($msg=null){$result=array("flag"=>"Error","msg"=>$msg,);printjson_encode($result);}/***@paramnull$msg返回具体错误的提示信息*@paramflagsuccessCURD操作失败*Functiondescript:返回标志信息‘Error",和提示信息,当前系统繁忙,请稍后重试;*/functionreturnApiErrorExample(){$result=array("flag"=>"Error","msg"=>"当前系统繁忙,请稍后重试!",);printjson_encode($result);}/***@paramnull$data*悔宽@return碧握亮array|mixed|null*Functiondescript:过滤post提交的参数;**/functioncheckDataPost($data=null){if(!empty($data)){$data=explode(",",$data);foreach($dataas$k=>$v){if((!isset($_POST[$k]))||(empty($_POST[$k]))){if($_POST[$k]!==0&&$_POST[$k]!=="0"){returnApiError($k."值为空!");}}}unset($data);$data=I("post.");unset($data["_URL_"],$data["token"]);return$data;}}/***@paramnull$data*@returnarray|mixed|null*Functiondescript:过滤get提交的参数;**/functioncheckDataGet($data=null){if(!empty($data)){$data=explode(",",$data);foreach($dataas$k=>皮迅$v){if((!isset($_GET[$k]))||(empty($_GET[$k]))){if($_GET[$k]!==0&&$_GET[$k]!=="0"){returnApiError($k."值为空!");}}}unset($data);$data=I("get.");unset($data["_URL_"],$data["token"]);return$data;}}查询单个果品详细信息/***发布模块**获取信息单个果品详细信息**/publicfunctiongetMyReleaseInfo(){//检查是否通过post方法得到数据checkdataPost("id");$where["id"]=$_POST["id"];$field[]="id,fruit_name,high_price,low_price,address,size,weight,fruit_pic,remark";$releaseInfo=$this->release_obj->findRelease($where,$field);$releaseInfo["remark"]=mb_substr($releaseInfo["remark"],0,49,"utf-8")."...";//多张图地址按逗号截取字符串,截取后如果存在空数组则需要过滤掉$releaseInfo["fruit_pic"]=array_filter(explode(",",$releaseInfo["fruit_pic"]));$fruit_pic=$releaseInfo["fruit_pic"];unset($releaseInfo["fruit_pic"]);//为图片添加存储路径foreach($fruit_picas$k=>$v){$releaseInfo["fruit_pic"][]="http://".$_SERVER["HTTP_HOST"]."/Uploads/Release/".$v;}if($releaseInfo){returnApiSuccess("",$releaseInfo);}else{returnApiError("什么也没查到(+_+)!");}}findRelease()方法的model/***查询一条数据*/publicfunctionfindRelease($where,$field){if($where["status"]==""||empty($where["status"])){$where["status"]=array("neq","9");}$result=$this->where($where)->field($field)->find();return$result;}app端接收到的数据(解码json之后){"flag":"success","message":"","responseList":{"id":"2","fruit_name":"苹果","high_price":"8.0","low_price":"5.0","address":"天津小白楼水果市场","size":"2.0","weight":"2.0","remark":"急需...","fruit_pic":["http://fruit.txunda.com/Uploads/Release/201508/55599e7514815.png","http://fruit.txunda.com/Uploads/Release/201508/554f2dc45b526.jpg"]}}app端接收到的数据(原生json串)代码如下:{"flag":"success","message":"","responseList":{"id":"2","fruit_name":"\u82f9\u679c","high_price":"8.0","low_price":"5.0","address":"\u5929\u6d25\u5c0f\u767d\u697c\u6c34\u679c\u5e02\u573a","size":"2.0","weight":"2.0","remark":"\u6025\u9700...","fruit_pic":["http:\/\/fruit.txunda.com\/Uploads\/Release\/201508\/55599e7514815.png","http:\/\/fruit.txunda.com\/Uploads\/Release\/201508\/554f2dc45b526.jpg"]}}
方案二:另外我们还可以通过ThinkPHP实现移动端访问自动切换主题模板,这样也可以做到移动端访问
ThinkPHP的模板主题机制,如果只是在PC,只要需修改 DEFAULT_THEME (新版模板主题默认是空,表示不启用模板主题功能)配置项就可以方便的实现多模板主题切换。
但对于移动端与PC端,也许你会设计完全不同的主题风格,且针对不同的来路提供不同的渲染方式,其中一种比较流行的方法是“响应式设计”,但就本人经历而言,要实现完全的“响应式设计”并不是那么容易,且解决兼容问题也是个难题,假设是大型站点,比如:淘宝、百度、拍拍这些,响应式设计肯定是满足不了需求的,而是需要针对手机访问用户提供单独的手机网站。
ThinkPHP 完全能够实现,而且非常的简单。与TPM的智能模版切换引擎相同,只要对来路进行判断处理就行了。
一、将 ismobile() 加入到{项目/Common/common.php}
functionismobile(){//如果有HTTP_X_WAP_PROFILE则一定是移动设备if(isset($_SERVER["HTTP_X_WAP_PROFILE"]))returntrue;//此条摘自TPM智能切换模板引擎,适合TPM开发if(isset($_SERVER["HTTP_CLIENT"])&&"PhoneClient"==$_SERVER["HTTP_CLIENT"])returntrue;//如果via信息含有wap则一定是移动设备,部分服务商会屏蔽该信息if(isset($_SERVER["HTTP_VIA"]))//找不到为flase,否则为truereturnstristr($_SERVER["HTTP_VIA"],"wap")?true:false;//判断手机发送的客户端标志,兼容性有待提高if(isset($_SERVER["HTTP_USER_AGENT"])){$clientkeywords=array("nokia","sony","ericsson","mot","samsung","htc","sgh","lg","sharp","sie-","philips","panasonic","alcatel","lenovo","iphone","ipod","blackberry","meizu","android","netfront","symbian","ucweb","windowsce","palm","operamini","operamobi","openwave","nexusone","cldc","midp","wap","mobile");//从HTTP_USER_AGENT中查找手机浏览器的关键字if(preg_match("/(".implode("|",$clientkeywords).")/i",strtolower($_SERVER["HTTP_USER_AGENT"]))){returntrue;}}//协议法,因为有可能不准确,放到最后判断if(isset($_SERVER["HTTP_ACCEPT"])){//如果只支持wml并且不支持html那一定是移动设备//如果支持wml和html但是wml在html之前则是移动设备if((strpos($_SERVER["HTTP_ACCEPT"],"vnd.wap.wml")!==false)&&(strpos($_SERVER["HTTP_ACCEPT"],"text/html")===false||(strpos($_SERVER["HTTP_ACCEPT"],"vnd.wap.wml")二、在{项目/Lib/}创建一个 CommonAction.php,假设你的项目已公共控制器,则无需创建,直接加在里面就行了。
ClassCommonActionextendsAction{Publicfunction_initialize(){//移动设备浏览,则切换模板if(ismobile()){//设置默认默认主题为MobileC("DEFAULT_THEME","Mobile");}//............你的更多代码.......}}关键词:
[责任编辑:xwzkw]
相关阅读
- (2023-05-31)如何利用Thinkphp框架开发移动端接口详解
- (2023-05-31)海明威的写作特点(海明威的名言)_当前速看
- (2023-05-31)Ed Boon解释了为什么真人快打1有那个奇怪的名字|环球热议
- (2023-05-31)抗菌面料板块5月30日跌0.17%,圣泉集团领跌,主力资金净流出2568.33万元
- (2023-05-31)热议:歌词有一句叫杀了我吧叫什么歌名呢_歌词有一句叫杀了我吧叫什么歌名
- (2023-05-31)新版眼保健操挂图_关于新版眼保健操挂图简介
- (2023-05-31)中介办理停息挂账费用是多少?停息挂账还需要收手续费吗
- (2023-05-31)我爱我家:预计今年市场交易量相对于去年将迎来稳健的复苏
- (2023-05-31)二次根号怎么开根号_二次根号怎么打出来
- (2023-05-31)天津港集团与上海ABB工程有限公司签署战略合作协议 全球热点
- (2023-05-31)沣东新城(西安西站) 环球聚焦
- (2023-05-30)用公款扮白富美,一国企原出纳贪污千万获刑|今日快看
- (2023-05-30)创业板智慧灯杆概念上市公司有几家?都有哪些?
- (2023-05-30)绿盟科技:5月26日召开分析师会议,中金公司、中航证券等多家机构参与 天天动态
- (2023-05-30)天天快资讯:马特乌斯:阿莱没必要争点球,像90年世界杯决赛我就没想借此加冕
- (2023-05-30)焦点资讯:微创医疗(00853.HK)因股份期权计划获行使增发39.58万股
- (2023-05-30)五旬大妈头发卷入农机,整张头皮瞬间被撕脱
- (2023-05-30)开发三味1∼6无修版在线观看 开发三味动漫在线播放无修版|环球快消息
- (2023-05-30)世界聚焦:中国科学院院士谭蔚泓解密分子医学:未来或可用人脸识别诊断疾病
- (2023-05-30)朝花夕拾二十四孝图读后感300字(朝花夕拾二十四孝图读后感)
- (2023-05-30)全球微动态丨昔日“牛股”公牛集团:新能源业务未探出新路 净利润增速放缓
- (2023-05-30)当前报道:今年西瓜18元一斤,100元一个?“吃瓜群众”不淡定了
- (2023-05-30)“中小企业计量伙伴计划”来了!到2025年引导100家大企业带动实施
- (2023-05-30)张绍刚离开非你莫属原因_张绍刚为什么离开非你莫属|环球报道
- (2023-05-30)德天空:米兰免签镰田大地交易可能本周完成,双方签约5年
- (2023-05-30)iPhone16最新细节公布:Pro机型为6.3/6.9英寸【附中国手机行业市场分析】
- (2023-05-30)腾讯Q1财报:“三驾马车”发力,企业服务重回增长 环球快看
- (2023-05-30)全球观速讯丨“冠军”导师团来学校教学传授 和同学们一起运动起来
- (2023-05-30)伊川先生是哪一位人物(请问谁知道伊川先生是谁)
- (2023-05-30)浦发银行青岛即墨支行:情系新市民 构建和谐金融环境 天天通讯