#phalapi-入门篇4(国际化高可用和自动生成文档)#php
##前言## 先在这里感谢phalapi框架创始人@dogstar,为咱们提供了这样一个优秀的开源框架.ios
在本小节主要讲解如何使用phalapi框架自带的国际化和文档自动生成,以及这样作能够的优势和好处和能解决哪方面的问题git
附上:web
官网地址:http://www.phalapi.net/数据库
开源中国Git地址:http://git.oschina.net/dogstar/PhalApi/tree/releaseapi
##1. 国际化##数组
说道国际化你们应该不陌生,对于显示端(web,andorid,ios)来讲就是对显示的内容能够任意切换语言,缓存
但对于服务端来讲就是对于返回值能够任意切换语言,来达到给国外友人去使用这种业务,框架
虽说这种需求是少数,可是在框架内部有提供良好处理国际化这种业务的工具,让咱们先看看具体是什么样子的工具
你们在init.php下面能够看到这样一句话
//翻译语言包设定 SL('zh_cn');
这句话是指向了**/Language/zh_cn/common.php**文件,打开这个文件能够发现这样一组对照关系
return array( 'Hi {name}, welcome to use PhalApi!' => '{name}您好,欢迎使用PhalApi!', 'user not exists' => '用户不存在', );
咱们看看自带的Demo例子里面有使用到第一个,使用方法是这样的
'content' => T('Hi {name}, welcome to use PhalApi!', array('name' => $this->username)),
你们是否是感受忽然之间发现了什么,对的就是使用T方法咱们看一下T方法的注释
/** * 快速翻译 * [@param](https://my.oschina.net/u/2303379) string $msg 待翻译的内容 * [@param](https://my.oschina.net/u/2303379) array $params 动态参数 */
这里的$msg 也就是在common.php中的key好比user not exists
$params参数是用来替换key里面用{name}括弧括起来的参数的传递一个数组key就和括弧里面的参数相同value就是你须要显示的类容
是否是感受简单易用啊,那咱们动手实验一下咱们把zh_cn/common.php加入一条对照
'Login success' => '登陆成功',
在en/common.php也加入一条数据
'Login success' => 'Login success1',
咱们修改Default.index接口以下
public function index() { return T('Login success'); }
咱们看能获得什么结果
那咱们把init.php中的**SL('zh_cn');改为SL('en');**会有什么结果呢
就能获得咱们在en/common.php中写下的Login success1这样就能够轻易的切换返回语言从而实现国际化
可是它带来的好处不只如此,还有易于修改和高可用这两点好处
先说第一点易于修改:我在原来刚刚开始作项目的时候每一个接口里面返回值全是写死的,好比用户不存在这种等等的错误返回,当要修改的时候咱们面临了一个问题全局替换,这样是很不可取的因此后面就统一成了一个统一的文件来存放返回结果,当咱们须要把用户不存在修改为请确认用户的真实性这样的业务的时候,咱们只须要修改一个统一的文件
好处之二就是高可用,高可用的表现又有两种一种是上面所说的项目内的复用,第二种就是新项目的复用,当你开始一个新项目的时候其实已经有不少返回是通用的了,那么你就能够直接使用或者是拷贝过来,不少重复的工做量就能够省去
##2. 文档自动生成##
你们能够发现和index.php以及init.php并行的还有一个checkApiParams.php一直没有用到,当咱们试着去访问一下
看到了这样的页面,访问这个文件的时候和访问接口同样的默认访问了Default.index的文档页面也有说明
它的机制是经过接口文件上的注释生成的返回结果
/** * 默认接口服务 * [@return](https://my.oschina.net/u/556800) string title 标题 * [@return](https://my.oschina.net/u/556800) string content 内容 * @return string version 版本,格式:X.X.X * @return int time 当前时间戳 */
剖析一下**@return string title** 标题 第一个是必要参数**@return**后面接着一个空格(千万不能多空格不然会失效)返回类型在接着一个空格返回名称
请求参数会按照接口文档中的getRules生成一些限定条件会自动生成说明须要加上**'desc' => 说明就能生成**你们能够试着访问一下user.getBaseInfo接口文档就能看到请求参数是有说明的
使用自动生成文档的好处在于会时时更新没必要在开发过程当中要取维护接口文档而烦恼,还有一点就是容错高由于是事实的因此不会出现请求参数接口和文档不一样步的状况因此很推荐使用,可是对于返回结果来讲须要手工维护不过也比维护文档来的方便,并且不用下载网上直接看,
其实你们看到/Public/demo/listAllApis.php里面这个至关于一个导航访问http://localhost/Public/demo/listAllApis.php能够看到如下结果
对于这个文件能够自定义成本身的文档入口文件,能够本身划分模块而后把接口文档的地址写上去名称和说明这样也不须要手动在url里面去输入接口名称了
注:在这里有一个坑,若是要使用自动生成文档的话须要关掉一些PHP缓存拓展,由于这些拓展在缓存的时候会去除掉注释以后在缓存会致使返回结果没法生成,好比opcache.xcache这类的拓展都会致使此类问题
##3. 总结##
本小节主要讲解了一下如何使用国际化使用的好处,以及运用官方工具生成及时文档,在下一章节咱们会讲解激动人心的数据库操做但愿你们能持续关注!
注:笔者能力有限有说的不对的地方但愿你们可以指出,也但愿多多交流!
官网QQ交流群:421032344 欢迎你们的加入!