php介面框架
❶ php哪個框架適合做api
在所有輕量級框架中,我推薦 CodeIgniter。 美中不足就是,框架入門極其簡單。但是,如果實現 完全的、優雅的 restful,門檻就有點兒高了。CodeIgniter 實現 restful 時,和底層的 HTTP 協議有些脫節,這些可以通過擴展框架來實現,而且有時候需要結合伺服器去配置。
❷ 使用php開發app的介面,什麼框架比較好
框架使用並不是必要的
app通訊 一般是xml json格式的數據
可能用到的函數
fsockopen curl simplexml json_encode json_decode等等
❸ 如何使用PHP的CodeIgniter框架來編寫API介面
1.將解壓的框架包放到的你的php環境的www/api目錄下:這里建立api目錄作為測試項目目錄。並運行localhost/api/index.php,就可以看到環境界面了
9.在瀏覽器中運行介面,根據不同的參數返回不同的數據。
獲取的是json數據
localhost/api/index/php?username=張三&format=json
獲取的是xml數據
localhost/api/index/php?username=張三&format=xml
❹ 高並發的API介面選用什麼PHP框架合適
Yaf的其實本質上講,是個基礎框架,僅提供了一個簡單粗暴的基礎URI路由功能,完事了。
最關鍵是並發和多線程以及定時器等等,Yaf本身不能實現。
這點小性能沒有必要在乎,c框架有些bug讓你無從下手,phalcon就被坑過
如果想用的6都會去看框架源碼,用c寫的框架看源碼多麼痛苦
我覺得隨著php逐漸的發展,性能逐漸的優化,這種類型框架遲早會被淘汰的
❺ PHP框架有哪些
使用PHP框架可以更快更簡單的部署項目並提高開發效率,但學習使用這些框架需要付出額外的學習成本。
最流行的PHP框架包括:Symfony, Zend Framework, Laravel、Phalcon、CodeIgniter、Yii、ThinkPHP等等。
❻ 使用php開發app的介面,什麼框架比較好
框架使用並不是必要的app通訊 一般是xml json格式的數據可能用到的函數fsockopen curl simplexml json_encode json_decode等等
❼ php框架都有什麼
PHP的框架最著名的就是Zend Framework,官方的,
其它還有CakePHP,Yii,等,
國內的比較有名的像THINKPHP,簡單易學,文檔也豐富,適合作入門學習,
至於LS說的DISCUZ,那些只是CMS,不是框架
❽ PHP框架開發的介面怎麼運行
裝nginx mysql 和php環境,然後把代碼文件放到nginx的html文件目錄下,然後配置nginx和php,如果是本地訪問就瀏覽器通過localhost/代碼文件目錄名/訪問,如果是域名訪問就要把域名綁定到伺服器Ip然後nginx中配置域名,然後瀏覽器通過域名訪問
❾ 如何利用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');
}
//............你的更多代碼.......
}
}
❿ php全棧框架有哪些
PHP全棧~
全球前100萬的站點中,有70%左右的站點用PHP開發,它與Linux/Mysql/Apache/Nginx等組成黃金搭檔,無論從成本投入和開發周期的考慮,PHP都是一個不錯的選擇。
PHP可用在網站開發,API介面開發,伺服器端開發,廣告系統開發,內部OA系統開發,移動端後台開發,游戲開發等,特別在移動互聯網發展迅猛的今天,PHP借機上位,重回一線開發語言行列。
全棧是全面橫向發展,單學PHP是專精縱向發展。PHP學精了,也是有前途的。但是,現在有幾個做PHP的自己不會寫點前端?再說你不可能一來就進大公司做團隊開發,你只負責PHP開發。而小公司基本上也不會讓你只寫PHP,都是一個人當幾個人用。這就是為什麼全棧更有前途的原因。
最近國內外都在流行一個詞叫Full Stack,中文翻譯過來叫全棧工程師,也叫全端工程師。微博上很多專業人士都在討論全端工程師,有贊有毀的。我對全端工程師的定義是:掌握多種技能,並 能利用多種技能獨立完成產品的人。打外比方,全棧工程師就是一個能獨立蓋一幢10層小洋樓的人,而普通工程師,則是可以和一群人蓋一幢摩天大樓的人。至於 要掌握哪些技能,我覺得這個要跟從事的行業與技術方向有關,做互聯網的和做軟體的是不一樣的,即使是做互聯網的,後端也可以分為很多種技術流派。