文档章节

phalapi-入门篇2(把它玩起来)

喵了_个咪
 喵了_个咪
发布于 2015/09/28 10:04
字数 1703
阅读 918
收藏 0

#phalapi-入门篇1(把它玩起来)#

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

这一小节主要是在搭建好的环境下,先把这个框架运行起来,和数据库交互起来(这里用的是mysql),对整个框架的结构进行最简单的一些介绍,以及点出一些新手长遇到的一些问题和一些小技巧.

附上:

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

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

##1. 运行起来吧PhalApi##

不用说首先当然是下载项目文件咯.

推荐使用git工具(如果不会使用Git 可以直接去开源中国下载源码):

使用git把https://git.oschina.net/dogstar/PhalApi.git克隆下来

然后切换到1.2.1分支上面(注:这里使用的是当前最新版本)

现在我们能看到真正的源码了 我们先来分析一下目录结构其实在项目里面有一个文件README.md里面已经有介绍了(我在补充一点)

│
├── PhalApi         //PhalApi框架,后期可以整包升级(尽量小的改动,大改动会影响框架的迭代)
│
│
├── Public          //对外访问目录,建议隐藏PHP实现(增加安全性)
│   └── demo        //Demo服务访问入口(我认为是所谓的项目名)
│
│
├── Config          //项目接口公共配置,主要有:app.php, sys.php, dbs.php(配置文件不多说)
├── Data            //项目接口公共数据(也就是从一开始的数据库sql文件以及后面结构有任何变化的sql文件都存放这里,方便自己查找,好习惯之一)
├── Language        //项目接口公共翻译(需要国际化的话很有用,让返回更优雅高可用)
├── Runtime         //项目接口运行文件目录,用于存放日记,可软链到别的区(主要是日志,一定要有写的权限不然会报错)
│
│
└── Demo            //应用接口服务,名称自取,可多组(项目文件所谓真正实现业务的地方)
    ├── Api             //接口响应层(主要用于接收请求,返回结果,把一块大的业务分发成一块块小的业务)
    ├── Domain          //接口领域层(我觉得可以叫做逻辑层容易理解一点,分成的各个小的业务在这里进行处理)
    ├── Model           //接口持久层(实现最简单的数据库操作,不要有任何逻辑因为是高可用)
    └── Tests           //接口单元测试(不用多说)

然后我们把项目文件放到网站的根目录然后我们运行http://localhost/Public/(localhost请自行替换)我们可以获得以下结果:

强烈推荐使用json解析工具(这里使用的chorme插件json-handle附上下载地址json-handle)

这样第一步运行PhalApi就已经完成了

注:有些童鞋可能运行起来是一片白(这点请大家特别注意,有很多人问我怎么自己写了一个模块调用一直是一片白,其实是php报错了只是你没有打开php报错)解决方法是修改php.ini文件中的两个参数

error_reporting=E_ALL
display_errors=ON

##2. 他是如何运行起来的##

先说说为什么会有上面这一串返回,有php基础的人都知道访问了Public目录默认是访问到了Index.php这个文件我们来看看它的代码

<?php
/**
 * $APP_NAME 统一入口
 */
require_once dirname(__FILE__) . '/init.php';                     //引入初始化文件我们以后再讲
//装载你的接口						
DI()->loader->addDirs('Demo');									  //这个就是定义了你接口所在的目录
/** ---------------- 响应接口请求 ---------------- **/
$api = new PhalApi();											  
$rs = $api->response();											  //执行你的接口
$rs->output();													  //返回结果

大家要是进入到$api->response();里面就会发现有这样一条语句

$service = DI()->request->get('service', 'Default.Index');

也就是当你没有定义访问莫个接口的时候,它会指向到Default模块下的Index接口

所以http://localhost/Public/等同于http://localhost/Public/?service=Default.Index试一试会得到一样的结果

机智的小伙伴一定发现了在项目中的Demo/Api里面有Default.php这样一个文件而恰巧里面有一个index方法,没错就是通过service=Default.Index找到了Default模块中的index方法

实现这一机制的语句是:

$rs->setData(call_user_func(array($api, $action)));

有兴趣的童鞋可以研究研究

##3. 数据库操作##

Demo下面的Api文件除了上面所调用的Default.php还有一个User.php没错就是User模块里面分别有两个接口可供调用 getBaseInfo,getMultiBaseInfo那我们直接调用getBaseInfo看看结果http://localhost/Public/?service=User.getBaseInfo

相信大家一眼就能看出来是缺少了传参我们在试试带上参数会怎么样http://localhost/Public/?service=User.getBaseInfo&user_id=1

当然这个是因为没有配置数据库引起的如何配置?当然是在配置文件里面配置,大家打开Config目录下的 dbs文件key看到以下类容

'db_demo' => array(                             //服务器标记
        'host'      => 'localhost',             //数据库域名
        'name'      => 'phalapi',               //数据库名字
        'user'      => 'root',                  //数据库用户名
        'password'  => '',	                    //数据库密码
        'port'      => '3306',                  //数据库端口
        'charset'   => 'UTF8',                  //数据库字符集
    ),

我们把它配置好然后再运行,可能有些人还是看到的和上面的情况是一样的,要不就是数据库不通要不就是没有创建phalapi数据库(自行创建)

当我们保证数据库能够联通,phalapi数据库也存在的情况下再去链接可能会出现类似于Warning: mkdir(): Permission denied in PhalApi/PhalApi/Logger/File.php on line 45这类错误,这是应为没有创建文件权限造成的,windows下面基本不会应为读写权限出问题,liunx下面要注意这点

当我们给目录赋予权限之后在运行可能会出现一个很长的报错PDOException大概的意思就是找不到tbl_user表

其实sql文件已经在Data文件夹里面了phalapi_test.sql

我们把sql文件运行一下创建好的效果是这样的(phalapi_test库名改成phalapi)

让我们再次运行那么结果就出来了

这样我们就已经把框架自带的例子跑了起来

##4. 总结##

这一小节主要是把phalapi的一些基本的机制做了一些简单的介绍,以及把框架自带的实例运行了起来,下一小节会着重介绍一下框架自带的请求验证,返回结果和自动生成的接口文档!

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

官网QQ交流群:421032344 欢迎大家的加入!

© 著作权归作者所有

喵了_个咪
粉丝 337
博文 165
码字总数 214149
作品 4
杨浦
技术主管
私信 提问
PhalApi 1.3.5 贺岁发布,PHP 轻量接口框架

[前言] 借春节来临之际, PhalApi(π框架)在此发布v1.3.5幺鸡贺岁小版本,同时祝愿各位同学新春快乐、万事如意! 基于老版本开发的应用可以无缝升级到v1.3.5版本,直接覆盖核心文件PhalApi...

暗夜在火星
2017/01/06
825
6
phalapi-进阶篇2(DI依赖注入和单例模式)

先在这里感谢phalapi框架创始人@dogstar,为我们提供了这样一个优秀的开源框架. 离上一次更新过去了快两周,在其中编写了一个关于DB分表分库解决大数据量的拓展,有兴趣的童鞋可以了解了解.废话...

喵了_个咪
2015/11/02
0
0
PhalApi三周年庆典纪念活动

前言: PhalApi是一个PHP轻量级开源接口框架,致力于快速开发接口服务。支持HTTP/SOAP/RPC等协议,可用于搭建接口/微服务/RESTful接口/Web Services,目前在码云平台上深受广大开发人员的喜欢...

暗夜在火星
2017/06/08
0
0
PhalApi(π框架) v1.4.1 发布,PHP 轻量级 API 接口开发框架

[前言] 夏天的脚步悄悄来临,在各位小伙伴的辛勤付出下,PhalApi迎来了新版本V1.4.1,在这次更新中着重以开发者便捷为本新增优化了很多功能,如对接口文档添加了各项重要功能可以直接在文档页面进...

喵了_个咪
2017/07/01
1K
4
PhalApi 2.1.2 发布,PHP轻量级开源接口框架

[前言] 感谢对PhalApi的关注!PhalApi是一个PHP轻量级开源接口框架,致力于快速开发接口服务。支持HTTP/SOAP/RPC等协议,可用于搭建接口/微服务/RESTful接口/Web Services。 为了提供更主流、...

暗夜在火星
2017/11/05
767
1

没有更多内容

加载失败,请刷新页面

加载更多

win mysql 安装笔记

官方下载zip的mysql包,解压即可 目录: D:\mysql_file\mysql-5.7.26-winx64 在该目录下新建一个文件夹data (如果操作过程中失败,要把data中的所有文件删掉) 新建一个文件,命名为my.ini,内容...

_大侠__
9分钟前
0
0
第八届“中国软件杯”初赛评审完美收官,课工场赛题备受关注

日前,由工业和信息部、教育部、江苏省人民政府共同创办第八届“中国软件杯”大学生软件设计大赛初赛评审历时两天,于 6 月 23 日圆满结束。由中国科学院软件研究所专家、各高校软件学院相关...

IFTNews
21分钟前
0
0
日期居然用字符串保存?我笑了

微信公众号「后端进阶」,专注后端技术分享:Java、Golang、WEB框架、分布式中间件、服务治理等等。 老司机倾囊相授,带你一路进阶,来不及解释了快上车! 我发现数据库有些日期居然用字符串...

后端进阶
24分钟前
2
0
c 基础教程四:c 输入输出(二)

在C语言中,有三个函数可以用来在显示器上输出数据,它们分别是: puts():只能输出字符串,并且输出结束后会自动换行 putchar():只能输出单个字符 printf():可以输出各种类型的数据 prin...

故城以南丶思念不安
25分钟前
0
0
SSO简单实现与理解

SSO英文全称Single Sign On,单点登录。SSO是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。它包括可以将这次主要的登录映射到其他应用中用于同一个用户的登录的机...

辣条QAQ
26分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部