《PHP教程:使用Thinkphp框架開(kāi)發(fā)移動(dòng)端接口》要點(diǎn):
本文介紹了PHP教程:使用Thinkphp框架開(kāi)發(fā)移動(dòng)端接口,希望對(duì)您有用。如果有疑問(wèn),可以聯(lián)系我們。
相關(guān)主題:thinkphp教程
PHP實(shí)戰(zhàn)方案一:給原生APP提供api接口
PHP實(shí)戰(zhàn)使用TP框架時(shí) 放在common文件夾下文件名就叫function.php
PHP實(shí)戰(zhàn)
<?php
/**
* Created by zhangkx
* Email: zkx520tnhb@163.com
* Date: 2015/8/1
* Time: 23:15
*/
/*************************** api開(kāi)發(fā)輔助函數(shù) **********************/
/**
* @param null $msg 返回正確的提示信息
* @param flag success CURD 操作成功
* @param array $data 具體返回信息
* Function descript: 返回帶參數(shù),標(biāo)志信息,提示信息的json 數(shù)組
*
*/
function returnApiSuccess($msg = null,$data = array()){
$result = array(
'flag' => 'Success',
'msg' => $msg,
'data' =>$data
);
print json_encode($result);
}
/**
* @param null $msg 返回具體錯(cuò)誤的提示信息
* @param flag success CURD 操作失敗
* Function descript:返回標(biāo)志信息 ‘Error',和提示信息的json 數(shù)組
*/
function returnApiError($msg = null){
$result = array(
'flag' => 'Error',
'msg' => $msg,
);
print json_encode($result);
}
/**
* @param null $msg 返回具體錯(cuò)誤的提示信息
* @param flag success CURD 操作失敗
* Function descript:返回標(biāo)志信息 ‘Error',和提示信息,當(dāng)前系統(tǒng)繁忙,請(qǐng)稍后重試;
*/
function returnApiErrorExample(){
$result = array(
'flag' => 'Error',
'msg' => '當(dāng)前系統(tǒng)繁忙,請(qǐng)稍后重試!',
);
print json_encode($result);
}
/**
* @param null $data
* @return array|mixed|null
* Function descript: 過(guò)濾post提交的參數(shù);
*
*/
function checkDataPost($data = null){
if(!empty($data)){
$data = explode(',',$data);
foreach($data as $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;
}
}
/**
* @param null $data
* @return array|mixed|null
* Function descript: 過(guò)濾get提交的參數(shù);
*
*/
function checkDataGet($data = null){
if(!empty($data)){
$data = explode(',',$data);
foreach($data as $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;
}
}
PHP實(shí)戰(zhàn)查詢(xún)單個(gè)果品詳細(xì)信息
PHP實(shí)戰(zhàn)
/**
* 發(fā)布模塊
*
* 獲取信息單個(gè)果品詳細(xì)信息
*
*/
public function getMyReleaseInfo(){
//檢查是否通過(guò)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ù)組則需要過(guò)濾掉
$releaseInfo['fruit_pic'] = array_filter(explode(',', $releaseInfo['fruit_pic']));
$fruit_pic = $releaseInfo['fruit_pic'];unset($releaseInfo['fruit_pic']);
//為圖片添加存儲(chǔ)路徑
foreach($fruit_pic as $k=>$v ){
$releaseInfo['fruit_pic'][] = 'http://'.$_SERVER['HTTP_HOST'].'/Uploads/Release/'.$v;
}
if($releaseInfo){
returnApiSuccess('',$releaseInfo);
}else{
returnApiError( '什么也沒(méi)查到(+_+)!');
}
}
PHP實(shí)戰(zhàn)findRelease() 方法的model
PHP實(shí)戰(zhàn)
/**
* 查詢(xún)一條數(shù)據(jù)
*/
public function findRelease($where,$field){
if($where['status'] == '' || empty($where['status'])){
$where['status'] = array('neq','9');
}
$result = $this->where($where)->field($field)->find();
return $result;
}
PHP實(shí)戰(zhàn)app端接收到的數(shù)據(jù)(解碼json之后)
PHP實(shí)戰(zhàn)
{
"flag": "success",
"message": "",
"responseList": {
"id": "2",
"fruit_name": "蘋(píng)果",
"high_price": "8.0",
"low_price": "5.0",
"address": "天津小白樓水果市場(chǎng)",
"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"
]
}
}
PHP實(shí)戰(zhàn)app端接收到的數(shù)據(jù)(原生json串)
PHP實(shí)戰(zhàn)方案二:另外我們還可以通過(guò)ThinkPHP實(shí)現(xiàn)移動(dòng)端拜訪自動(dòng)切換主題模板,這樣也可以做到移動(dòng)端拜訪
PHP實(shí)戰(zhàn)ThinkPHP的模板主題機(jī)制,如果只是在PC,只要需修改 DEFAULT_THEME (新版模板主題默認(rèn)是空,表示不啟用模板主題功能)配置項(xiàng)就可以方便的實(shí)現(xiàn)多模板主題切換.
PHP實(shí)戰(zhàn) 但對(duì)于移動(dòng)端和PC端,也許你會(huì)設(shè)計(jì)完全不同的主題風(fēng)格,且針對(duì)不同的來(lái)路提供不同的渲染方式,其中一種比較流行的方法是“響應(yīng)式設(shè)計(jì)”,但就本人經(jīng)歷而言,要實(shí)現(xiàn)完全的“響應(yīng)式設(shè)計(jì)”并不是那么容易,且解決兼容問(wèn)題也是個(gè)難題,假設(shè)是大型站點(diǎn),比如:淘寶、百度、拍拍這些,響應(yīng)式設(shè)計(jì)肯定是滿(mǎn)足不了需求的,而是需要針對(duì)手機(jī)拜訪用戶(hù)提供單獨(dú)的手機(jī)網(wǎng)站.
PHP實(shí)戰(zhàn)ThinkPHP 完全可以實(shí)現(xiàn),而且相當(dāng)簡(jiǎn)單.和TPM的智能模版切換引擎一樣,只要對(duì)來(lái)路進(jìn)行判斷處理即可.
PHP實(shí)戰(zhàn)一、將 ismobile() 加入到{項(xiàng)目/Common/common.php}
PHP實(shí)戰(zhàn)
function ismobile() {
// 如果有HTTP_X_WAP_PROFILE則一定是移動(dòng)設(shè)備
if (isset ($_SERVER['HTTP_X_WAP_PROFILE']))
return true;
//此條摘自TPM智能切換模板引擎,適合TPM開(kāi)發(fā)
if(isset ($_SERVER['HTTP_CLIENT']) &&'PhoneClient'==$_SERVER['HTTP_CLIENT'])
return true;
//如果via信息含有wap則一定是移動(dòng)設(shè)備,部分服務(wù)商會(huì)屏蔽該信息
if (isset ($_SERVER['HTTP_VIA']))
//找不到為flase,否則為true
return stristr($_SERVER['HTTP_VIA'], 'wap') ? true : false;
//判斷手機(jī)發(fā)送的客戶(hù)端標(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']))) {
return true;
}
}
//協(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') < strpos($_SERVER['HTTP_ACCEPT'], 'text/html')))) {
return true;
}
}
return false;
}
PHP實(shí)戰(zhàn)二、在{項(xiàng)目/Lib/}創(chuàng)建一個(gè) CommonAction.php,如果你的項(xiàng)目已公共控制器,則無(wú)需創(chuàng)建,直接加在里面即可.
PHP實(shí)戰(zhàn)
Class CommonAction extends Action{
Public function _initialize(){
//移動(dòng)設(shè)備瀏覽,則切換模板
if (ismobile()) {
//設(shè)置默認(rèn)默認(rèn)主題為 Mobile
C('DEFAULT_THEME','Mobile');
}
//............你的更多代碼.......
}
}
PHP實(shí)戰(zhàn)通過(guò)以上2種方式均可實(shí)現(xiàn)移動(dòng)端拜訪,一種是原生,一種是偽原生,小伙伴們根據(jù)自己的項(xiàng)目需求來(lái)選擇吧.
歡迎參與《PHP教程:使用Thinkphp框架開(kāi)發(fā)移動(dòng)端接口》討論,分享您的想法,維易PHP學(xué)院為您提供專(zhuān)業(yè)教程。
轉(zhuǎn)載請(qǐng)注明本頁(yè)網(wǎng)址:
http://www.snjht.com/jiaocheng/8935.html