#phalapi-入门篇6(小技巧和浅谈API适用范围以及入门篇总结)#php
##前言## 先在这里感谢phalapi框架创始人@dogstar,为咱们提供了这样一个优秀的开源框架.html
本篇文章的目的在于把框架自带的一些好用,封装好的一些方便开发的类库简单的说一下,灵活使用能够提升开发效率,再就是由于在交流过程当中有不少童鞋提出了一些关于什么样的项目怎么用API和web端怎么使用API这类的问题,我就个人理解把个人一些想法和你们交流一下,最后是对于入门篇作一下总结,以及对后面的一些教程作一下说明.前端
附上:node
官网地址:http://www.phalapi.net/git
开源中国Git地址:http://git.oschina.net/dogstar/PhalApi/tree/releaseweb
##1. 小技巧##后端
在这里介绍的是一些比较基础是好比curl,log,和tools着一些基础的,关于cache,Cookie等一些会在后面进阶篇慢慢道来api
###1.1 curl请求类###安全
其实在框架内部已经提供了Curl的请求类位置是在**/Phalpi/Phalapi/CUrl.php**并发
// 构造方法接受参数为失败重试次数默认是1能够本身指定 $curl = new PhalApi_CUrl(2); // 进行GET 返回请求结果 $rs = $curl->get('http://phalapi.oschina.mopaas.com/Public/demo/?service=Default.Index'); // 进行POST 返回请求结果 $data = array('username' => 'dogstar'); $rs = $curl->post('http://phalapi.oschina.mopaas.com/Public/demo/?service=Default.Index', $data);
###1.2 log日志类###
在大部分时候都没办法实时知道报错信息,可是若是发生了错误咱们须要记录起来,来提供给本身往后分析,或者是在运营环境中有个问题可是本身不是很肯定能够经过debug日志的形式写入文件进行分析,框架有提供这方面的功能,在接口init.php中已经有下面这段话了
//日记纪录 DI()->logger = new PhalApi_Logger_File(API_ROOT . '/Runtime', PhalApi_Logger::LOG_LEVEL_DEBUG | PhalApi_Logger::LOG_LEVEL_INFO | PhalApi_Logger::LOG_LEVEL_ERROR);
这样就已经注册了日志类**API_ROOT . '/Runtime'**这个是表示日志存放的路径(必定要保证有写入权限才能正常使用)使用以下
//error 系统异常类 DI()->logger->error('fail to insert DB', $data); //对应的LOG 2015-02-07 20:37:55|ERROR|fail to insert DB|{"name":"dogstar","password":"123456"} //info 业务纪录类 DI()->logger->info('add user exp', array('name' => 'dogstar', 'before' => 10, 'addExp' => 2, 'after' => 12, 'reason' => 'help one more phper')); //对应的LOG 2015-02-07 20:48:51|INFO|add user exp|{"name":"dogstar","before":10,"addExp":2,"after":12,"reason":"help one more phper"} //debug 开发调试类 DI()->logger->debug('just for test', array('name' => 'dogstar', 'password' => '******')); //对应的LOG 2015-02-07 20:37:55|DUBUG|just for test|{"name":"dogstar","password":"******"}
文件存放的文件路径通常为Runtime/log/201502(年月)/20150207(年月日).log
###1.3 tool工具类###
工具类的路径在**/Phalpai/Phalapi/Tool.php**中目前里面提供了两个工具(IP地址获取,随机字符串生成)使用方法入下,本身会常用的工具均可以放进去
//实例化工具类 $PhalApi_Tool = new PhalApi_Tool(); //生成一个"0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"组成的一个随机字符串根据输入的值决定长度 $PhalApi_Tool->createRandStr(5); //获取请求的IP这里的IP是外网IP $PhalApi_Tool->getClientIp();
##2. 浅谈API适用范围##
其实想谈谈这个的缘由是应为有人有疑问,Api适用范围是否是只局限于APP,还有就是若是是用 phalapi 提供一个后台管理的web项目的话要怎么去作,在这里根据一些笔者本人的一些肤浅的了解谈一谈个人认为,分一下几个场景进行说明.
###2.1 移动端###
我认为排在第一位的应该是移动应用好比Android和IOS上面的应用通信确定是须要使用到API通信的(基本上是首选,不多有看到其余非接口形式的).
###2.1 提供服务(主要是平台类)###
提供服务(主要是平台类)好比银行来讲,提供的支付接口,付款接口等,还有就是一些外卖平台,团购平台都有本身的一套接入API接受数据(这一些可能会偏向高端一点)
###2.1 长周期web项目###
长周期web项目,为何要叫作长周期web项目,由于短时间的项目好比5天的一个抽奖活动我是以为实在没有必要去作成接口通信的形式,这种短周期的项目直接拿着静态页面加上MVC框架去实现来的是划算一点(由于API和web通信成本仍是比较大的),对于长周期的项目来讲使用API是有好处的以下:
1.先后端分离,后端提供API服务,前端进行请求展现,让前端专一作前端的事情,让后端专一作后端的事情.
2.升级迭代能够有效的减少维护成本,当迭代升级的时候,若是是后端没有变更,只是前端进行变更了能够很好的分开工做量.(前端同样)
3.分离以后规范更加清晰,API有API的一套完整的开发规范,前端也同样,就不会和MVC框架同样代码堆积在一个地方
4.高并发web项目优化目标准确,优化空间大,对于API来讲就是能够单点优化.
当前也有他的缺点,前期工做量会有所增长,沟通成本增长,可是我认为他带来的好处是持续的
还有一个重点就是怎么实现通信,我如今在项目中前端是使用js进行请求通信的,这是比较经常使用的,还有一种设想PHP提供接口,而后node.js或者其余语言进行请求而后渲染出html代码给到前端进行展现,这样能够解决安全问题,并且node.js不须要进行数据操做性能也是很是好的.
##3. 入门篇总结##
通过了一个月交流入门篇也就在这里结束了,在入门篇里面吧一些关于Phalapi的基本使用方式都过了一遍,我也但愿你们能动手都操做一遍,当如入门篇讲的是比较基础的东西,经验老到的童鞋过一过就好了,在后面的进阶篇里面跟过的会讲到概念和思想性的东西,好比DI思想单例模式,三层的好处等,而在实战篇中会着重讲解如何运用到实际开发中,怎么多项目共用框架等一些比较实际的一些教程,也但愿你们可以进一步关注,再一次感谢喜欢Phalapi框架的大家,大家的关注就是个人动力!
注:笔者能力有限有说的不对的地方但愿你们可以指出,也但愿多多交流!
官网QQ交流群:421032344 欢迎你们的加入!