使用Thinkphp框架开发移动端接口

              本文重点:使用Thinkphp框架开发移动端接口

              app端接收到的数据(原生json串)代码代码如下:{flag:success,message:,responseList:{id:2,fruit_name:\u82f9\u679c,high_price:,low_price:,address:\u5929\u6d25\u5c0f\u767d\u697c\u6c34\u679c\u5e02\u573a,size:,weight:,remark:\u6025\u9700...,fruit_pic:[http:\/\/\/Uploads\/Release\/201508\/,http:\/\/\/Uploads\/Release\/201508\/]}}方案二:另外我们还可以通过ThinkPHP实现移动端访问自动切换主题模板,这样也可以做到移动端访问ThinkPHP的模板主题机制,如果只是在PC,只要需修改DEFAULT_THEME(新版模板主题默认是空,表示不启用模板主题功能)配置项就可以方便的实现多模板主题切换。

                但对于移动端和PC端,也许你会设计完全不同的主题风格,且针对不同的来路提供不同的渲染方式,其中一种比较流行的方法是响应式设计,但就本人经历而言,要实现完全的响应式设计并不是那么容易,且解决兼容问题也是个难题,假设是大型站点,比如:淘宝、百度、拍拍这些,响应式设计肯定是满足不了需求的,而是需要针对手机访问用户提供单独的手机网站。

              ThinkPHP完全可以实现,而且相当简单。 和TPM的智能模版切换引擎一样,只要对来路进行判断处理即可。 一、将ismobile()加入到{项目/Common/}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],)!==false)(strpos($_SERVER[HTTP_ACCEPT],text/html)===false||(strpos($_SERVER[HTTP_ACCEPT],)strpos($_SERVER[HTTP_ACCEPT],text/html)))){returntrue;}}returnfalse;}二、在{项目/Lib/}创建一个,如果你的项目已公共控制器,则无需创建,直接加在里面即可。 ClassCommonActionextendsAction{Publicfunction_initialize(){//移动设备浏览,则切换模板if(ismobile()){//设置默认默认主题为MobileC(DEFAULT_THEME,Mobile}//............你的更多代码.......}}通过以上2种方式均可实现移动端访问,一种是原生,一种是伪原生,小伙伴们根据自己的项目需求来选择吧。