當前位置:首頁 » 游戲軟體 » thinkphp可以開發app

thinkphp可以開發app

發布時間: 2022-02-05 21:15:12

① 如何基於ThinkPHP框架開發APP的即時通訊功能

phpcms,rpal,dedecms,這些嚴格來講,都不是框架,可以說是cmd建站系統。這些有經驗的站長就可以使用。 thinkphp,Yii,cakePhp,這些屬於php的框架,是開發人員,進行敏捷開發所使用的 至於寫一個框架

② thinkphp開發app要結合什麼軟體CSS JS希望放在app本地~資料庫用伺服器!

你說的是移動網站還是手機APP應用?如果是手機APP應用,THINKPHP只能來寫介面,然後JSON返回到手機去輸出,這種形式根本不需要你來做CSS和JS,那些都是手機前端去搞的,如果是網站的話,CSS,JS這些你難道還想生成COOKE?放在客戶端不安全,雖然只是一些樣式和特效。

③ thinkphp里的__APP__意思

您好,這樣的:
這是定義目錄的一個常量
你可以看看 thinkphp 的開發文檔
http://document.thinkphp.cn/manual_3_2.html#entrance_file
比如。你寫了個方法,這個方法輸出一個url
這個url的格式是域名/模塊名/xxxxx/項目名/xxxx
裡面的項目名是調用這個方法的項目名
可能每次調用的項目不一樣
那你直接寫APP_NAME
就不用每次拿這個項目名,再拼到url里去了。

④ 如何基於ThinkPHP框架開發APP的即時通訊功能

一種是開發API,另外一種是實現移動端訪問自動切換移動主題模板,從而實現偽app訪問

⑤ 用thinkphp寫一個app登錄的介面 麻煩哪位大神給個事例

1、可以使用 REST模式 來開發 App 介面,首先建立一個公共控制器,再建其他控制器繼承它即可。
2、確定好返回的數據內容格式及信息碼;

<?php

// App介面公共控制器 AppController

namespace Api\Controller;

use Think\Controller\RestController;

class AppController extends RestController {

// 自動載入的東西

function _initialize() { }

// 驗證 客戶端 token

protected function checkAppToken($apptoken){

// 引入 function.php 中定義的檢測 apptoken 的函數

if(checkingAppToken($apptoken)){

return true;

}else{

$data['code'] = '404';

$data['msg'] = 'apptoken無效';

$data['data'] = null;

$this -> response($data, 'json');

exit();

}

}

// 驗證 用戶 token

protected function checkUserToken($usertoken){

}

// 各種驗證 ……

}

?>
復制代碼

其他介面控制器繼承 AppController

<?php

// 內容控制器 ContentsController

namespace Api\Controller;

class ContentsController extends AppController {

// 自動載入驗證

function _initialize() {

parent::_initialize();

// 驗證 客戶端 token

$apptoken = I('post.apptoken');

parent::checkAppToken($apptoken);

// 驗證 用戶 token

$usertoken = I('post.usertoken');

parent::checkUserToken($usertoken);

// 各種需要驗證的驗證 ……

}

// 各種業務方法

public function index(){

// 返回數據

$this -> response($data, 'json');

exit();

}

}

?>

⑥ 請問ThinkPHP裡面的常量__APP__是在哪裡定義的 - PHP框架開發

是在App.class.php裡面定義的 在執行$app->run();的時候就執行了

⑦ thinkphp!是不是開發app用的

thinkphp主要是用於網站開發的,也能用來開發APP,

⑧ 如何利用Thinkphp框架開發移動端介面詳解

方案一:給原生APP提供api介面

使用TP框架時 放在common文件夾下文件名就叫function.php


<?php
/**
*Createdbyzhangkx
*Email:[email protected]
*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
*@returnarray|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;
}
}


查詢單個果品詳細信息
/**
*發布模塊
*
*獲取信息單個果品詳細信息
*
*/
(){
//檢查是否通過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":"u82f9u679c","high_price":"8.0","low_price":"5.0","address":"","size":"2.0","weight":"2.0","remark":"u6025u9700...","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,否則為true
returnstristr($_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')<strpos($_SERVER['HTTP_ACCEPT'],'text/html')))){
returntrue;
}
}
returnfalse;
}

二、在{項目/Lib/}創建一個 CommonAction.php,假設你的項目已公共控制器,則無需創建,直接加在裡面就行了。

{
Publicfunction_initialize(){
//移動設備瀏覽,則切換模板
if(ismobile()){
//設置默認默認主題為Mobile
C('DEFAULT_THEME','Mobile');
}
//............你的更多代碼.......
}
}

⑨ thinkphp可不可以作為app的後台

不可以將php打包進app,php程序只能在伺服器端運行,前端可以向伺服器請求數據,後端由php處理。前端開發只能由html,css,js組成

⑩ thinkphp完全免費嗎用它開發商業軟體,用不用交費

授權協議
ThinkPHP遵循Apache2開源協議發布,並提供免費使用。
版權所有Copyright © 2006-2012 by ThinkPHP (http://thinkphp.cn) All rights reserved。
ThinkPHP® 商標和著作權所有者為上海頂想信息科技有限公司。
Apache Licence是著名的非盈利開源組織Apache採用的協議。該協議和BSD類似,鼓勵代碼共享和尊重原作者的著作權,允許代碼修改,再作為開源或商業軟體發布。需要滿足的條件:
1. 需要給用戶一份Apache Licence ;
2. 如果你修改了代碼,需要在被修改的文件中說明;
3. 在延伸的代碼中(修改和有源代碼衍生的代碼中)需要帶有原來代碼中的協議,商標,專利聲明和其他原來作者規定需要包含的說明;
4. 如果再發布的產品中包含一個Notice文件,則在Notice文件中需要帶有本協議內容。你可以在Notice中增加自己的許可,但不可以表現為對Apache Licence構成更改。