1. 使用php开发app的接口,什么框架比较好
框架使用并不是必要的app通讯 一般是xml json格式的数据可能用到的函数fsockopen curl simplexml json_encode json_decode等等
2. 如何利用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');
}
//............你的更多代码.......
}
}
3. 开发app用php什么框架最好
现在大多数的PHP培训都是用thinkphp来教,,所以这几年出来了一大批thinkphp开发的,而且现在小项目的APP,基本都是thinkphp
4. 用php做一个网站或者app,框架真的很重要吗
其实并没有重不重要这一说的。主要是看你是想要开发效率还是运行效率。
框架会牺牲你的运行效率,但是会大大提升开发效率。举个例子。
我现在要写个一路由 www.xxx.com/api
以laravel为例
Route::get('api',function(){
echo 'hello';
})
这样我们就完成了一个访问www.xxx.com/api,输出hello字符的页面了。
那么没有框架尼?额,我觉得这个页面应该装不下代码了。
这里我并没有说框架有多好,如今的银弹法则依然存在,我们无法让开发效率和运行效率同时提升。
所以必须在开发效率和运行效率选择。框架因此而生。
至于框架的好与坏完全取决于个人的喜好,比如有些人喜欢thinkphp的自动控制器路由,有人喜欢laravel的手动可控路由,于是就有人开始了……
框架的好和坏毕竟不是那么容易评定的,毕竟那么多使用者尼。
所以选择框架完全看需求,你老板说让你1小时不用框架做一个blog,如果不是大触,我觉得真的会崩溃掉。
如果选择框架,那估计也是10分钟的事情。
5. 公司要做个APP, 用HTML5 打包,我是后端PHP ,以前用框架写商城,恩,做APP,php可以用框架吗
php框架例如:
Ci、Yii、Thinkphp3.2、laravel、Thinkphp5.0(适合做接口,和3.2不是一个概念)
二次开发开源商城:
ecshop、ShopNC、Ectouch、TPshop
6. 高并发的API接口选用什么PHP框架合适
Yaf的其实本质上讲,是个基础框架,仅提供了一个简单粗暴的基础URI路由功能,完事了。
最关键是并发和多线程以及定时器等等,Yaf本身不能实现。
这点小性能没有必要在乎,c框架有些bug让你无从下手,phalcon就被坑过
如果想用的6都会去看框架源码,用c写的框架看源码多么痛苦
我觉得随着php逐渐的发展,性能逐渐的优化,这种类型框架迟早会被淘汰的
7. php哪个框架适合做api
在所有轻量级框架中,我推荐 CodeIgniter。 美中不足就是,框架入门极其简单。但是,如果实现 完全的、优雅的 restful,门槛就有点儿高了。CodeIgniter 实现 restful 时,和底层的 HTTP 协议有些脱节,这些可以通过扩展框架来实现,而且有时候需要结合服务器去配置。
8. 使用php开发app的接口,什么框架比较好
框架使用并不是必要的
app通讯 一般是xml json格式的数据
可能用到的函数
fsockopen curl simplexml json_encode json_decode等等
9. PHP框架开发的接口怎么运行
装nginx mysql 和php环境,然后把代码文件放到nginx的html文件目录下,然后配置nginx和php,如果是本地访问就浏览器通过localhost/代码文件目录名/访问,如果是域名访问就要把域名绑定到服务器Ip然后nginx中配置域名,然后浏览器通过域名访问
10. 怎么利用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)之后,基本上就可以开发一个简单地服务端接口了(业务逻辑得自己琢磨),再加上手机客户端那边配套的设置搭起来,那么就可以了。