① app開發都會用到什麼框架
國內幾個集成類型的框架大致看過,適合入門級別或者對App要求不是很嚴格的開發者。
如果對App的性能、包size有要求。對代碼有潔癖,不想使用一個功能就引入一個大坨jar包。
或者想專注學習某一個模塊或方向,那麼推薦你使用Lite的類庫。
以下是lite站點已列出的一些特點
1. 專一,每個庫只做一件事情,並且只有核心相關的代碼,這使得框架庫體積非常小。
2. 簡單,不需要三方依賴或輔助,API使用簡單。
3. 性能不錯,作者每個環節經過測試對比,來選出更好的模式和做法。
4. 依賴抽象,開發者可以自由的替換實現,來拓展功能。
5. 約定優於配置,這個無需多說了,省掉多餘描述,更好地做事情。
圖片載入,UIL或者Picasso;
資料庫,ormLite或者greenDao;
網路層,apcahe的http-common或者square的okhttp;
聊天,XMPP;
JSON解析,fastJson;
動畫,NineOldandroids。
② 如何基於Thinkphp框架開發APP的即時通訊功能
phpcms,rpal,dedecms,這些嚴格來講,都不是框架,可以說是cmd建站系統。
③ 怎麼利用PHP框架語言開發手機app
一般的PHP框架都可以用來做app後台伺服器。因為原理上客戶端從你這邊拿的都是字元串數據,所以就算你不用框架也沒有問題,不過會引發後續的問題。PHP提供API給客戶端就好了,API描述方式有很多種:REST、SOAP等等均可。推薦REST。
PHP可以開發客戶端?
因為PHP是腳本語言,主要用於服務端的開發,是負責完成 B/S架構 或 C/S架構 的S部分,但是PHP可不僅僅只能在互聯網站上發展,一個PHP for Android(PFA)站點表示他們將可以發布編程模型、工具盒文檔讓PHP在Android上實現應用。
怎麼利用PHP框架語言開發手機APP?
第一:和 WEB 開發一樣,首先需要一些相關的參數,這些參數,都會由客戶端傳過來,也許是 GET 也許是 POST,這個需要開發團隊相互之間約定好,或者制定統一規范。
第二:有了參數,根據應用需求,完成數據處理,例如:任務進度更新、APP內購、一局游戲結束數據提交等等
第三:數據邏輯處理完之後,返回客戶端所需要用到的相關數據,例如:任務狀態、內購結果、玩家信息等等
P.S:數據怎麼返給客戶端?直接輸出的形式,如:JSON、XML、TEXT 等等。
第四:客戶端獲取到你返回的數據後,在客戶端本地和用戶進行交互!
php不能編寫 app應用程序,主要用於B/S結構(Browser/Server,瀏覽器/伺服器模式)開發使用。但是php可以作為伺服器與app應用交換數據服務端API.
學習APP現在流行的有三種手機平台,android、IOS,windows。他們都各有各自的編程語言,具體可以在網路搜索下各自平台製作學習。
移動後台都是 PHP、Python,Java都重,更別說C++了。看你用什麼協議了,http ,tcp/ip。nodejs 可以把路由,form表單驗證 寫成c++的模塊, 主要是提供介面給移動端APP調用,可以從成本、伺服器資源的佔用、開發效率、運行效率,後台復雜邏輯處理的能力 等 。目前我就知道的有jsp,asp,php。
利用PHP框架開發手機APP需要考慮兩種可能:
第一:如果需要即時通訊,也就是需要手機客戶端與服務端保持TCP長連接,服務端需要向客戶端推送數據的時候可以隨時通過這個長連接發送數據給客戶端,這樣便能做到客戶端與服務端及時通訊甚至客戶端與客戶端及時通訊。做到這需要PHP能維持很多客戶端連接,並且需要多進程支持,支持自己的通訊協議。這樣的應用傳統的nginx+php-fpm + 傳統的php框架是做不到的。如果是長連接即時通訊類的伺服器框架推薦一看下workerman,它是就是一個php的socket伺服器框架,非常適合做手機後台伺服器框架。
第二:如果不需要即時通訊的話,可以考慮直接走http協議,用nginx+php-fpm搭建一個webserver就好了,php框架可以採用thinkphp、yii等等,客戶端需要與伺服器通訊的時候向服務端get/post一個請求就好。
如果是比較簡單的手機APP,例如新聞客戶端這樣的不會涉及到長連接的服務,那麼可以考慮直接使用http協議。因為該協議幾乎被所有可以上網的設備支持,手機客戶端那邊也有大量相關的庫可以調用,省掉不少麻煩,其實確定了這三個:協議(HTTP)、數據表示方法(JSON)、請求數據的方法(REST)之後,基本上就可以開發一個簡單地服務端介面了(業務邏輯得自己琢磨),再加上手機客戶端那邊配套的設置搭起來,那麼就可以了。
④ 使用php開發app的介面,什麼框架比較好
框架使用並不是必要的app通訊 一般是xml json格式的數據可能用到的函數fsockopen curl simplexml json_encode json_decode等等
⑤ PHP可以開發APP嗎
作為一名IT從業者,我來回答一下這個問題。
首先,App開發需要一系列開發角色的參與,涉及到後端開發工程師和前端開發工程師,在技術選擇上目前也有多種不同的解決方案。從當前PHP的應用場景來看,PHP語言可以用於後端服務開發。
PHP語言是IT(互聯網)行業內流行程度相對比較高的編程語言,但是由於PHP語言主要應用在Web開發場景下,所以在當前的大數據、人工智慧時代,PHP語言並沒有獲得更多的關注。雖然PHP語言並沒有在大數據時代拓展自身的開發邊界,但是由於Web開發領域的市場規模非常大,所以PHP語言依然是最為流行的編程語言之一。
目前App的開發可以分為移動端開發部分和服務端(後端)開發部分,在移動端開發主要涉及到Android開發和iOS開發兩大塊,其中Android開發可以採用Java和kotlin,而iOS開發可以採用OC和Swift。當然,移動端開發也可以採用多種技術的混合使用,也可以采衫純用框架(混合式)來加速開發過程。
後端開發技術的選擇也是比較多的,目前比較常見的後端開發方案就包括Java、Python和PHP等,在大數據和雲計算時代,採用Go語言也是一個不錯的選擇。從這個角度來看,掌握PHP也是可以加入到移動互聯網開發團隊的。
最後,PHP語言本身的優點是比較多的,包括健全的語言生態體系和較短的開發周期等等,但是由於PHP語言在大數據、雲計算和人工智慧等新興技術體或滲咐系下沒有獲得更多的應用場景,所以對於PHP程序員來說,可以關注一下Python語言,以便於提升自身的崗位級別和職場價值。
我從事互聯網行業多年,目前也在帶計算機專業的研究生,主要的研究方向集中在大數據和人工智慧領域,我會陸續寫一些關於互聯網技術方面的文章,感興趣的朋友可以關注我,相信一定喊圓會有所收獲。
如果有互聯網、大數據、人工智慧等方面的問題,或者是考研方面的問題,都可以在評論區留言,或者私信我!
⑥ 如何基於ThinkPHP框架開發APP的即時通訊功能
一種是開發API,另外一種是實現移動端訪問自動切換移動主題模板,從而實現偽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');
}
//............你的更多代碼.......
}
}