如何利用Thinkphp框架開發(fā)移動(dòng)端接口詳解
(資料圖)
方案一:給原生APP提供api接口
使用TP框架時(shí) 放在common文件夾下文件名就叫function.php
/***Createdbyzhangkx*Email:zkx520tnhb@163.com*Date:2015/8/1*Time:23:15*//******api開發(fā)輔助函數(shù)*******//***@paramnull$msg返回正確的提示信息*@paramflagsuccessCURD操作成功*@paramarray$data具體返回信息*Functiondescript:返回帶參數(shù),標(biāo)志信息,提示信息的json數(shù)組**/functionreturnApiSuccess($msg=null,$data=array()){$result=array("flag"=>"Success","msg"=>$msg,"data"=>$data);printjson_encode($result);}/***@paramnull$msg返回具體錯(cuò)誤的提示信息*@paramflagsuccessCURD操作失敗*Functiondescript:返回標(biāo)志信息‘Error",和提示信息的json數(shù)組*/functionreturnApiError($msg=null){$result=array("flag"=>"Error","msg"=>$msg,);printjson_encode($result);}/***@paramnull$msg返回具體錯(cuò)誤的提示信息*@paramflagsuccessCURD操作失敗*Functiondescript:返回標(biāo)志信息‘Error",和提示信息,當(dāng)前系統(tǒng)繁忙,請(qǐng)稍后重試;*/functionreturnApiErrorExample(){$result=array("flag"=>"Error","msg"=>"當(dāng)前系統(tǒng)繁忙,請(qǐng)稍后重試!",);printjson_encode($result);}/***@paramnull$data*悔寬@return碧握亮array|mixed|null*Functiondescript:過濾post提交的參數(shù);**/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提交的參數(shù);**/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;}}查詢單個(gè)果品詳細(xì)信息/***發(fā)布模塊**獲取信息單個(gè)果品詳細(xì)信息**/publicfunctiongetMyReleaseInfo(){//檢查是否通過post方法得到數(shù)據(jù)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")."...";//多張圖地址按逗號(hào)截取字符串,截取后如果存在空數(shù)組則需要過濾掉$releaseInfo["fruit_pic"]=array_filter(explode(",",$releaseInfo["fruit_pic"]));$fruit_pic=$releaseInfo["fruit_pic"];unset($releaseInfo["fruit_pic"]);//為圖片添加存儲(chǔ)路徑foreach($fruit_picas$k=>$v){$releaseInfo["fruit_pic"][]="http://".$_SERVER["HTTP_HOST"]."/Uploads/Release/".$v;}if($releaseInfo){returnApiSuccess("",$releaseInfo);}else{returnApiError("什么也沒查到(+_+)!");}}findRelease()方法的model/***查詢一條數(shù)據(jù)*/publicfunctionfindRelease($where,$field){if($where["status"]==""||empty($where["status"])){$where["status"]=array("neq","9");}$result=$this->where($where)->field($field)->find();return$result;}app端接收到的數(shù)據(jù)(解碼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端接收到的數(shù)據(jù)(原生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實(shí)現(xiàn)移動(dòng)端訪問自動(dòng)切換主題模板,這樣也可以做到移動(dòng)端訪問
ThinkPHP的模板主題機(jī)制,如果只是在PC,只要需修改 DEFAULT_THEME (新版模板主題默認(rèn)是空,表示不啟用模板主題功能)配置項(xiàng)就可以方便的實(shí)現(xiàn)多模板主題切換。
但對(duì)于移動(dòng)端與PC端,也許你會(huì)設(shè)計(jì)完全不同的主題風(fēng)格,且針對(duì)不同的來路提供不同的渲染方式,其中一種比較流行的方法是“響應(yīng)式設(shè)計(jì)”,但就本人經(jīng)歷而言,要實(shí)現(xiàn)完全的“響應(yīng)式設(shè)計(jì)”并不是那么容易,且解決兼容問題也是個(gè)難題,假設(shè)是大型站點(diǎn),比如:淘寶、百度、拍拍這些,響應(yīng)式設(shè)計(jì)肯定是滿足不了需求的,而是需要針對(duì)手機(jī)訪問用戶提供單獨(dú)的手機(jī)網(wǎng)站。
ThinkPHP 完全能夠?qū)崿F(xiàn),而且非常的簡單。與TPM的智能模版切換引擎相同,只要對(duì)來路進(jìn)行判斷處理就行了。
一、將 ismobile() 加入到{項(xiàng)目/Common/common.php}
functionismobile(){//如果有HTTP_X_WAP_PROFILE則一定是移動(dòng)設(shè)備if(isset($_SERVER["HTTP_X_WAP_PROFILE"]))returntrue;//此條摘自TPM智能切換模板引擎,適合TPM開發(fā)if(isset($_SERVER["HTTP_CLIENT"])&&"PhoneClient"==$_SERVER["HTTP_CLIENT"])returntrue;//如果via信息含有wap則一定是移動(dòng)設(shè)備,部分服務(wù)商會(huì)屏蔽該信息if(isset($_SERVER["HTTP_VIA"]))//找不到為flase,否則為truereturnstristr($_SERVER["HTTP_VIA"],"wap")?true:false;//判斷手機(jī)發(fā)送的客戶端標(biāo)志,兼容性有待提高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中查找手機(jī)瀏覽器的關(guān)鍵字if(preg_match("/(".implode("|",$clientkeywords).")/i",strtolower($_SERVER["HTTP_USER_AGENT"]))){returntrue;}}//協(xié)議法,因?yàn)橛锌赡懿粶?zhǔn)確,放到最后判斷if(isset($_SERVER["HTTP_ACCEPT"])){//如果只支持wml并且不支持html那一定是移動(dòng)設(shè)備//如果支持wml和html但是wml在html之前則是移動(dòng)設(shè)備if((strpos($_SERVER["HTTP_ACCEPT"],"vnd.wap.wml")!==false)&&(strpos($_SERVER["HTTP_ACCEPT"],"text/html")===false||(strpos($_SERVER["HTTP_ACCEPT"],"vnd.wap.wml")二、在{項(xiàng)目/Lib/}創(chuàng)建一個(gè) CommonAction.php,假設(shè)你的項(xiàng)目已公共控制器,則無需創(chuàng)建,直接加在里面就行了。
ClassCommonActionextendsAction{Publicfunction_initialize(){//移動(dòng)設(shè)備瀏覽,則切換模板if(ismobile()){//設(shè)置默認(rèn)默認(rèn)主題為MobileC("DEFAULT_THEME","Mobile");}//............你的更多代碼.......}}關(guān)鍵詞:
[責(zé)任編輯:xwzkw]
相關(guān)閱讀
- (2023-05-31)如何利用Thinkphp框架開發(fā)移動(dòng)端接口詳解
- (2023-05-31)海明威的寫作特點(diǎn)(海明威的名言)_當(dāng)前速看
- (2023-05-31)Ed Boon解釋了為什么真人快打1有那個(gè)奇怪的名字|環(huán)球熱議
- (2023-05-31)抗菌面料板塊5月30日跌0.17%,圣泉集團(tuán)領(lǐng)跌,主力資金凈流出2568.33萬元
- (2023-05-31)熱議:歌詞有一句叫殺了我吧叫什么歌名呢_歌詞有一句叫殺了我吧叫什么歌名
- (2023-05-31)新版眼保健操掛圖_關(guān)于新版眼保健操掛圖簡介
- (2023-05-31)中介辦理停息掛賬費(fèi)用是多少?停息掛賬還需要收手續(xù)費(fèi)嗎
- (2023-05-31)我愛我家:預(yù)計(jì)今年市場交易量相對(duì)于去年將迎來穩(wěn)健的復(fù)蘇
- (2023-05-31)二次根號(hào)怎么開根號(hào)_二次根號(hào)怎么打出來
- (2023-05-31)天津港集團(tuán)與上海ABB工程有限公司簽署戰(zhàn)略合作協(xié)議 全球熱點(diǎn)
- (2023-05-31)灃東新城(西安西站) 環(huán)球聚焦
- (2023-05-30)用公款扮白富美,一國企原出納貪污千萬獲刑|今日快看
- (2023-05-30)創(chuàng)業(yè)板智慧燈桿概念上市公司有幾家?都有哪些?
- (2023-05-30)綠盟科技:5月26日召開分析師會(huì)議,中金公司、中航證券等多家機(jī)構(gòu)參與 天天動(dòng)態(tài)
- (2023-05-30)天天快資訊:馬特烏斯:阿萊沒必要爭點(diǎn)球,像90年世界杯決賽我就沒想借此加冕
- (2023-05-30)焦點(diǎn)資訊:微創(chuàng)醫(yī)療(00853.HK)因股份期權(quán)計(jì)劃獲行使增發(fā)39.58萬股
- (2023-05-30)五旬大媽頭發(fā)卷入農(nóng)機(jī),整張頭皮瞬間被撕脫
- (2023-05-30)開發(fā)三味1~6無修版在線觀看 開發(fā)三味動(dòng)漫在線播放無修版|環(huán)球快消息
- (2023-05-30)世界聚焦:中國科學(xué)院院士譚蔚泓解密分子醫(yī)學(xué):未來或可用人臉識(shí)別診斷疾病
- (2023-05-30)朝花夕拾二十四孝圖讀后感300字(朝花夕拾二十四孝圖讀后感)
- (2023-05-30)全球微動(dòng)態(tài)丨昔日“牛股”公牛集團(tuán):新能源業(yè)務(wù)未探出新路 凈利潤增速放緩
- (2023-05-30)當(dāng)前報(bào)道:今年西瓜18元一斤,100元一個(gè)?“吃瓜群眾”不淡定了
- (2023-05-30)“中小企業(yè)計(jì)量伙伴計(jì)劃”來了!到2025年引導(dǎo)100家大企業(yè)帶動(dòng)實(shí)施
- (2023-05-30)張紹剛離開非你莫屬原因_張紹剛為什么離開非你莫屬|(zhì)環(huán)球報(bào)道
- (2023-05-30)德天空:米蘭免簽鐮田大地交易可能本周完成,雙方簽約5年
- (2023-05-30)iPhone16最新細(xì)節(jié)公布:Pro機(jī)型為6.3/6.9英寸【附中國手機(jī)行業(yè)市場分析】
- (2023-05-30)騰訊Q1財(cái)報(bào):“三駕馬車”發(fā)力,企業(yè)服務(wù)重回增長 環(huán)球快看
- (2023-05-30)全球觀速訊丨“冠軍”導(dǎo)師團(tuán)來學(xué)校教學(xué)傳授 和同學(xué)們一起運(yùn)動(dòng)起來
- (2023-05-30)伊川先生是哪一位人物(請(qǐng)問誰知道伊川先生是誰)
- (2023-05-30)浦發(fā)銀行青島即墨支行:情系新市民 構(gòu)建和諧金融環(huán)境 天天通訊