phalapi-入门篇4(国际化高可用和自动生成文档)

phalapi-入门篇4(国际化高可用和自动生成文档)

前言

先在这里感谢phalapi框架创始人@dogstar,为我们提供了这样一个优秀的开源框架.

在本小节主要讲解如何使用phalapi框架自带的国际化和文档自动生成,以及这样做可以的优点和好处和能解决哪方面的问题

附上:

官网地址:http://www.phalapi.net/

开源中国Git地址:http://git.oschina.net/dogstar/PhalApi/tree/release

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 string $msg 待翻译的内容
 * @param 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 string title 标题
 * @return 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. 总结

本小节主要讲解了一下如何使用国际化使用的好处,以及运用官方工具生成及时文档,在下一章节我们会讲解激动人心的数据库操作希望大家能持续关注!

注:笔者能力有限有说的不对的地方希望大家能够指出,也希望多多交流!

时间: 2024-08-04 03:29:08

phalapi-入门篇4(国际化高可用和自动生成文档)的相关文章

基于Nginx和Consul构建高可用及自动发现的Docker服务架构

本文讲的是基于Nginx和Consul构建高可用及自动发现的Docker服务架构[编者的话]本文对于Docker和Consul Template以及Nginx如何结合使用做了较为详细的介绍. [上海站|3天烧脑式微服务架构训练营]培训内容包括:DevOps.微服务.Spring Cloud.Eureka.Ribbon.Feign.Hystrix.Zuul.Spring Cloud Config.Spring Cloud Sleuth等. 导读 如果你在大量接触或使用微服务的话,你可能会碰到一个问

构建一个高可用及自动发现的Docker基础架构

Docker的生态日趋成熟,开源社区也不断孵化出优秀的周边项目,覆盖网络.监控.维护.部署.开发等方面.帮助开发.运维人员快速构建.运营Docker服务环境,其中也不乏有大公司的影子,如Google.IBM.Redhat,甚至微软也宣称后续将提供Docker在Windows平台的支持.Docker的发展前景一片大好.但在企业当中,如何选择适合自己的Docker构建方案?可选的方案有kubernetes与CoreOS(都已整合各类组件),另外一种方案为Haproxy+etcd+confd,采用松散

[PhalApi实战篇(1)]Redis队列处理异步任务

[PhalApi实战篇(1)]Redis队列处理异步任务 前言 先在这里感谢phalapi框架创始人@dogstar,为我们提供了这样一个优秀的开源框架. 哈喽大家好呀!之前编写的PhalApi入门篇和进阶篇已经过去了好久了,在此之间也回答了很多小伙伴各种各样的问题,这里也希望吧里面一些问的比较多的和比较有趣的以及笔者在使用PhalApi一些新的体会,都提取出来为大家带来一些能够在实际开发中可以使用的技术或思想,那么我们就开始我们实战篇中的第一节 Redis队列处理异步任务 大家希望喵咪在Pha

SQL Server高可用——日志传送(4-2)——部署

原文:SQL Server高可用--日志传送(4-2)--部署   前文再续,书接上一回.本章演示一下日志传送的具体过程   准备工作:   由于时间关系,已经装好了3台虚拟机,且同在一个域里面:         SQL01:主服务器 SQL02:辅助服务器 SQL03:监视服务器   初始配置:       这里是实验方便,正式环境应该由于特殊账号的读写权限.注意这里的读写权限不应该是sql内部的账号,如sa这些,而是sqlagent.SQLServer service这类型的账号,这些账号才

Windows Azure Virtual Machine (9) Virtual Machine高可用与自

Virtual Machine高可用与自动负载均衡(下) 上一章的内容里,我们为Azure Virtual Machine的准备工作已经完成.一个DNS地址对应2台不同的虚拟机,分别为LeiZhangVMOne和LeiZhangVMTwo.并且设置了高可用,名称为LeiAbvSet. 这时候如果我们通过IE访问DNS地址:http://LeiZhangVM.cloudapp.net,是无法访问的.这是因为之前选择的Windows Azure Virtual Machine是Server 2012

高可用Hadoop平台-实战尾声篇

1.概述 今天这篇博客就是<高可用Hadoop平台>的尾声篇了,从搭建安装到入门运行 Hadoop 版的 HelloWorld(WordCount 可以称的上是 Hadoop 版的 HelloWorld ),在到开发中需要用到的各个套件以及对套件的安装使用,在到 Hadoop 的实战,一路走来我们对在Hadoop平台下开发的基本流程应该都熟悉了.今天我们来完成在高可用Hadoop平台开发的最后一步,导出数据. 2.导出数据目的 首先,我来说明下为什么要导出数据,导出数据的目的是为了干嘛? 我们

Ghost 的高可用安装 安装篇

前面详细的讲述了,在 Node.js 4.x 环境下安装 Ghost 博客平台的准备工作,包括配置.系统的选择,组建的选择等等,如果没有看过的同学,一定要去看一下! 门:<Ghost 的高可用安装 准备篇> 下载.准备 这里我们推荐安装的是由王赛翻译的 Ghost 中文版(非官方,因为官方也没有出中文版.)因为,它不仅被翻译了,而且其去除了像谷歌字体这样的会拖慢速度的内容:集成 node_modules 免去了大陆主机无法运行的问题. 下载 http://dl.ghostchina.com/G

高可用的MongoDB集群-实战篇

1.概述 最近有同学和网友私信我,问我MongoDB方面的问题:这里我整理一篇博客来赘述下MongoDB供大家学习参考,博客的目录内容如下: 基本操作 CRUD MapReduce 本篇文章是基于MongoDB集群(Sharding+Replica Sets)上演示的,故操作的内容都是集群层面的,所以有些命令和单独的使用MongoDB库有异样.具体集群搭建可以参考我写的<高可用的MongoDB集群>. 2.基本操作 常用的 Shell 命令如下所示: db.help() # 数据库帮助 db.

高可用Hadoop平台-Flume NG实战图解篇

1.概述 今天补充一篇关于Flume的博客,前面在讲解高可用的Hadoop平台的时候遗漏了这篇,本篇博客为大家讲述以下内容: Flume NG简述 单点Flume NG搭建.运行 高可用Flume NG搭建 Failover测试 截图预览 下面开始今天的博客介绍. 2.Flume NG简述 Flume NG是一个分布式,高可用,可靠的系统,它能将不同的海量数据收集,移动并存储到一个数据存储系统中.轻量,配置简单,适用于各种日志收集,并支持Failover和负载均衡.并且它拥有非常丰富的组件.Fl