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

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的一些基本的机制做了一些简单的介绍,以及把框架自带的实例运行了起来,下一小节会着重介绍一下框架自带的请求验证,返回结果和自动生成的接口文档!

时间: 2024-10-28 11:21:46

phalapi-入门篇2(把它玩起来)的相关文章

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

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

phalapi-入门篇6(小技巧和浅谈API适用范围以及入门篇总结)

phalapi-入门篇6(小技巧和浅谈API适用范围以及入门篇总结) 前言 先在这里感谢phalapi框架创始人@dogstar,为我们提供了这样一个优秀的开源框架. 本篇文章的目的在于把框架自带的一些好用,封装好的一些方便开发的类库简单的说一下,灵活使用可以提高开发效率,再就是因为在交流过程中有很多童鞋提出了一些关于什么样的项目怎么用API和web端怎么使用API这类的问题,我就我的理解把我的一些想法和大家交流一下,最后是对于入门篇做一下总结,以及对后面的一些教程做一下说明. 附上: 官网地址

Swift入门篇-Hello World

原文:Swift入门篇-Hello World  提示:如果您使用手机和平板电脑看到这篇文章,您请在WIFI的环境下阅读,里面有很多图片, 会浪费很多流量.   博主语文一直都不好(如有什么错别字,请您在下评论)望您谅解,没有上过什么学的    最近这2天主要升级系统和升级开发工具和去啃苹果开发文档,也时常关注一些写swift的文章.自己也边学swift,边做了一些小例子玩.个人感觉语法精炼,用起来还是很爽的. 但是个人觉得开发工具还是有很多不足(如自动提示有时候不出现),希望苹果在发布正式版的

怪物猎人《迷你英雄:恐龙猎人》攻略入门篇

今天为大家带来的是迷你英雄:恐龙猎人入门攻略.又到一周四,对于喜欢手游的玩家今天毫无疑问是神奇的.本周推出的新作中最吸引牛爷爷的就是迷你英雄:恐龙猎人了,单从游戏标题就感觉这是一款类似怪物猎人的游戏,下载一玩果然如此,尽管动作性远远没怪物猎人那么强,但作为一款仿怪物猎人的ARPG游戏绝对是合格的,甚至可以说是上佳之作.下面就是牛爷爷的迷你英雄:恐龙猎人攻略入门篇,为大家简单介绍一下游戏的玩法和大本营几个建筑的作用.进入游戏是一个教程关,首先看到的是游戏主界面介绍,右上角是人物状态栏和暂停键,中间

ASP漏洞全接触-入门篇

随着B/S模式应用开发的发展,使用这种模式编写应用程序的程序员也越来越多.但是由于这个行业的入门门槛不高,程序员的水平及经验也参差不齐,相当大一部分程序员在编写代码的时候,没有对用户输入数据的合法性进行判断,使应用程序存在安全隐患.用户可以提交一段数据库查询代码,根据程序返回的结果,获得某些他想得知的数据,这就是所谓的SQL Injection,即SQL注入. SQL注入是从正常的WWW端口访问,而且表面看起来跟一般的Web页面访问没什么区别,所以目前市面的防火墙都不会对SQL注入发出警报,如果

扩展你的PHP之入门篇

1. 扩展你的php2. 扩展的3种方式3. extension dll方式的扩展4. 小结 首先注意, 以下所有的一切皆在win下进行, 使用的工具的vc++6.0.扩展你的PHPPHP以方便快速的风格迅速在web系统开发中占有了重要地位. PHP本身提供了丰富的大量的函数及功能. 长话短说. 我们看看我们如何进行扩展. 扩展的3种方式External ModulesBuilt-in ModulesThe Zend Engine3种方式的优缺点可参见PHP手册.http://www.php.n

Flash动画基础教程①入门篇

flash动画|基础教程 這個教程是本人的一些經驗之談,為了初學者的入門教程,未經本人許可請勿轉載!謝謝 Flash动画基础教程--入门篇①首先我们来说说什么是Flash? Flash是Macromedia公司出品的软件,对于Flash是什么很多的描述,大致是"交互性矢量多媒体制作软件"的意思!首先,它是一种多媒体制作软件,Flash的产品往往都是一些"有声有色"给人视觉冲击的动画.其次,Flash是以矢量图为基础的,矢量图最大的特点就是它能无限的缩放,不会因为图像

.NET Remoting程序开发入门篇

程序 一.Remoting基础 什么是Remoting,简而言之,我们可以将其看作是一种分布式处理方式.从微软的产品角度来看,可以说Remoting就是DCOM的一种升级,它改善了很多功能,并极好的融合到.Net平台下.Microsoft? .NET Remoting 提供了一种允许对象通过应用程序域与另一对象进行交互的框架.这也正是我们使用Remoting的原因.为什么呢?在Windows操作系统中,是将应用程序分离为单独的进程.这个进程形成了应用程序代码和数据周围的一道边界.如果不采用进程间

【IPFS + 区块链 系列】 入门篇 - IPFS+IPNS+个人博客搭建

孔壹学院:国内区块链职业教育引领品牌. 作者:黎跃春,孔壹学院创始人,区块链.高可用架构师 微信:liyc1215 区块链博客:http://liyuechun.org 在阅读这篇文章之前,你需要先学习[IPFS + 区块链 系列] 入门篇 - IPFS环境配置这篇文章. 目录 1. 如何在IPFS新增一个文件 1.1 新建file.txt文件 1.2 查看ipfs相关命令 1.3 将file.txt添加到ipfs节点 2. 通过ipfs创建目录存储文件 3. 如何在IPFS新增一个目录 3.1