php 社区框架,php框架

ee66b87a9a6e9aeab3fdc874f53b4931.png

2推荐

[任务]

用筋斗云框架创建一个Web接口项目叫mysvc,创建数据库,提供对ApiLog对象的操作接口。

先从github上下载开源的筋斗云后端框架及示例应用:https://github.com/skyshore2001/jdcloud-php

建议安装git工具直接下…...

天笑

发表于 2017-02-24

ee66b87a9a6e9aeab3fdc874f53b4931.png

推荐

函数型接口

如果不是典型的对象增删改查操作,可以设计函数型接口,比如登录、修改密码、上传文件这些。

函数型接口一般实现在文件 php/api_functions.php 中,它被主文件api.php包含。

假设有以下接口定义:

获取登录信息(who am i?)

who…...

天笑

发表于 2017-03-01

ee66b87a9a6e9aeab3fdc874f53b4931.png

推荐

函数mparam用来取必传参数(m表示mandatory),参数既可以用URL参数,也可以用POST参数传递。如果是取一个可选参数,可以用param函数。

与直接用php的$_GET等变量相比,param/mparam可指定参数类型,如

// 取id参数,特别地,对id参数会…...

天笑

发表于 2017-03-01

ee66b87a9a6e9aeab3fdc874f53b4931.png

推荐

接口返回

函数应返回符合接口原型中描述的对象,框架会将其转为最终的JSON字符串。

比如登录接口要求返回{id, _isNew}:

login(uname, pwd, _app?=user) -> {id, _isNew?}

因而在api_login中,返回结构…...

天笑

发表于 2017-03-01

ee66b87a9a6e9aeab3fdc874f53b4931.png

推荐

数据库操作

数据库连接一开始是通过tool/init.php在线配置的,或直接手改文件 php/conf.user.php 文件的相关配置如:

putenv("P_DB=localhost/jdcloud");

putenv("P_DBCRED…...

天笑

发表于 2017-03-01

ee66b87a9a6e9aeab3fdc874f53b4931.png

推荐

对象型接口

为了更好的理解之后章节的示例,我们先了解一下示例中用到的数据模型。

[数据模型描述方式]

下面是几个数据表,每个表都应有个作为主键的id字段,是可自动增长的整数类型,即使是关联表也应定义id字段作为主键。

用户:

@User: id, uname, phon…...

天笑

发表于 2017-03-03

ee66b87a9a6e9aeab3fdc874f53b4931.png

推荐

对象接口通过继承AccessControl类来实现,默认允许5个标准对象操作,可以改写属性$allowedAc来限定允许的操作:

class AC_ApiLog extends AccessControl

{

protected $allowedAc = ["get…...

天笑

发表于 2017-03-03

ee66b87a9a6e9aeab3fdc874f53b4931.png

推荐

绑定访问控制类与权限

前面在讲函数型接口时,提到权限检查用checkAuth函数来实现。

在对象型接口中,通过绑定访问控制类与权限,来实现不同角色通过不同的类来控制。

比如前例中ApiLog对象接口允许员工登录(AUTH_EMP)后访问,只要定义:

class AC2_A…...

天笑

发表于 2017-03-08

ee66b87a9a6e9aeab3fdc874f53b4931.png

推荐

定制可访问数据

除了限制用户可以访问哪些表和字段,还常会遇到一类需求是限制用户只能访问自己的数据。

[任务]

用户登录后,可以添加订单、查看自己的订单。

我们在设计文档中设计接口如下:

添加订单

Ordr.add()(amount) -> id

查看订单

Ord…...

天笑

发表于 2017-03-08

ee66b87a9a6e9aeab3fdc874f53b4931.png

推荐

前面已经学习过怎样把一个数据库中的表作为对象暴露出去。

其中,表的字段就可直接映射为对象的属性。对于不在对象主表中定义的字段,统称为虚拟字段。

通过$vcolDefs来定义虚拟字段,最简单的一类虚拟字段是字段别名,比如

class AC1_Ordr extends Acce…...

天笑

发表于 2017-03-09

ee66b87a9a6e9aeab3fdc874f53b4931.png

推荐

关联字段依赖

假设设计有“订单评价”对象,它与“订单”相关联:

@Rating: id, orderId, content

一个订单可有多个评价,表间的关系为:

订单评价Rating(orderId) n<->1 订单Ordr

订单Ordr(userId)…...

天笑

发表于 2017-03-09

ee66b87a9a6e9aeab3fdc874f53b4931.png

推荐

计算字段

在定义虚拟字段时,"res"也可以是一个计算值,或一个很复杂的子查询。

例如表OrderItem是Ordr对象的一个子表,表示订单中每一项产品的名称、数量、价格:

@Ordr: id, userId, status(2), amount, d…...

天笑

发表于 2017-03-09

ee66b87a9a6e9aeab3fdc874f53b4931.png

推荐

子表对象

前面提到过想在对象中返回子表时,可以使用压缩成一个字符串的子表字段,一般适合数据比较简单的场合。

另一种方式是用$subobj来定义子表对象。

例如在获取订单时,同时返回订单日志,设计接口如下:

Ordr.get() -> {id, ..., @orde…...

天笑

发表于 2017-03-14

ee66b87a9a6e9aeab3fdc874f53b4931.png

推荐

虚拟表和视图

表ApiLog中有一个字段叫app,表示前端应用名:

@ApiLog: id, tm, addr, app, userId

- userId: 如果app=user,则关联到User表;如果app=emp,则关联到员工表Employee

@Employee…...

天笑

发表于 2017-03-14

ee66b87a9a6e9aeab3fdc874f53b4931.png

推荐

接口返回前回调

示例:添加订单到Ordr表时,自动添加一条"创建订单"日志到OrderLog表,可以这样实现:

class AC1_Ordr extends AccessControl

{

protected function onValidate()

…...

天笑

发表于 2017-03-14

ee66b87a9a6e9aeab3fdc874f53b4931.png

推荐

非标准对象接口

对象的增删改查(add/set/get/query/del共5个)接口称为标准接口。

可以为对象增加其它非标准接口,例如取消订单接口:

Ordr.cancel(id)

应用逻辑

- 权限: AUTH_USER

- 用户只能操作自己的订单

只要在相应的访…...

天笑

发表于 2017-03-14

ee66b87a9a6e9aeab3fdc874f53b4931.png

推荐

日志与调试

输出日志可以用logit函数,将信息输出到后端文件中,默认存在服务目录下的trace.log文件中。

logit("### debug info");

除直接查看文件外,也可以在浏览器中访问 tool/log.php 页面来查看最近的日志…...

天笑

发表于 2017-03-21

ee66b87a9a6e9aeab3fdc874f53b4931.png

推荐

会话管理

筋斗云使用cookie机制来维持与客户端的会话。

它默认使用的cookie名称是"userid",但可以由客户端请求中URL参数_app来修改,比如_app=emp,则使用cookie名称为"empid"。

在筋斗云中,_ap…...

天笑

发表于 2017-03-21

ee66b87a9a6e9aeab3fdc874f53b4931.png

推荐

批量请求

筋斗云框架支持批量请求,即在一次请求中,包含多条接口调用。

假设一个前端页面进入时,需要接连调用好多次接口才能完成展现,一般的做法是需要后端重新设计接口来优化。

筋斗云支持batch接口,这时后端不必做任何设计修改,前端只要调用batch接口即可获得优化。

假如…...

天笑

发表于 2017-03-21

ee66b87a9a6e9aeab3fdc874f53b4931.png

推荐

随着移动互联网的快速发展,各行业对手机应用开发需求旺盛。

应用开发一般分为前端和后端,后端关注数据和业务,需要对前端各类应用(如安卓应用、苹果应用、H5应用等)提供基于HTTP协议的交互接口。

筋斗云是一个Web接口开发框架,它不讲MVC,不做对象-数据表映射(OR Mapp…...

天笑

发表于 2017-02-20

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值