#phalapi-入门篇6(小技巧和浅谈API适用范围以及入门篇总结)#
![](http://webtools.qiniudn.com/master-LOGO-20150410_50.jpg)
##前言##
***先在这里感谢phalapi框架创始人@dogstar,为我们提供了这样一个优秀的开源框架.***
本篇文章的目的在于把框架自带的一些好用,封装好的一些方便开发的类库简单的说一下,灵活使用可以提高开发效率,再就是因为在交流过程中有很多童鞋提出了一些关于什么样的项目怎么用API和web端怎么使用API这类的问题,我就我的理解把我的一些想法和大家交流一下,最后是对于入门篇做一下总结,以及对后面的一些教程做一下说明.
附上:
喵了个咪的博客:[w-blog.cn](w-blog.cn)
官网地址:[http://www.phalapi.net/](http://www.phalapi.net/ "PhalApi官网")
开源中国Git地址:[http://git.oschina.net/dogstar/PhalApi/tree/release](http://git.oschina.net/dogstar/PhalApi/tree/release "开源中国Git地址")
##1. 小技巧##
在这里介绍的是一些比较基础是比如**curl,log,和tools**着一些基础的,关于**cache,Cookie**等一些会在后面进阶篇慢慢道来
###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 欢迎大家的加入!**
####[上一章](/wikis/%5b7.5%5d-phalapi-%e5%85%a5%e9%97%a8%e7%af%875(%e6%95%b0%e6%8d%ae%e5%ba%93%e6%93%8d%e4%bd%9c%e5%92%8cModel%e5%b1%82).html) [文档首页](/wikis/) [下一章](/wikis/%5b7.7%5d-phalapi-%e8%bf%9b%e9%98%b6%e7%af%871(%e4%b8%89%e5%b1%82%e7%bb%93%e6%9e%84Api%2cDomain%2c%e5%92%8cModel).html)
- 空白目录
- [7.1]-phalapi-入门篇1(简单介绍以及环境搭建)
- [7.2]-phalapi-入门篇2(把它玩起来)
- [7.3]-phalapi-入门篇3(请求和返回)
- [7.4]-phalapi-入门篇4(国际化高可用和自动生成文档)
- [7.5]-phalapi-入门篇5(数据库操作和Model层)
- [7.6]-phalapi-入门篇6(小技巧和浅谈API适用范围以及入门篇总结)
- [7.7]-phalapi-进阶篇1(三层结构Api,Domain,和Model)
- [7.8]-phalapi-进阶篇2(DI依赖注入和单例模式)
- [7.9]-phalapi-进阶篇3(自动加载和拦截器)
- [7.10]-phalapi-进阶篇4(notorm进阶以及事务操作)
- [7.11]-phalapi-进阶篇5(数据库读写分离)
- [7.12]-phalapi-进阶篇6(解决大量数据存储数据库分表分库拓展)
- [7.13]-phalapi-进阶篇7(使用缓存以及用redis拓展解决实际问题)
- [7.14]-phalapi-进阶篇8(PhalApi能带来什么和进阶篇总结)