筋斗云专题

筋斗云接口编程 / 虚拟表和视图

虚拟表和视图 表ApiLog中有一个字段叫app,表示前端应用名: @ApiLog: id, tm, addr, app, userId- userId: 如果app=user,则关联到User表;如果app=emp,则关联到员工表Employee@Employee: id, name, phone, ...@User: id, ... 当app=”emp”时,就表示是员工端应用的操作日

筋斗云接口编程 / 子表对象

子表对象 前面提到过想在对象中返回子表时,可以使用压缩成一个字符串的子表字段,一般适合数据比较简单的场合。 另一种方式是用$subobj来定义子表对象。 例如在获取订单时,同时返回订单日志,设计接口如下: Ordr.get() -> {id, ..., @orderLog?}返回orderLog: {id, tm, dscr, action} 订单日志子表。示例{id: 1, dscr:

筋斗云接口编程 / 子表对象

子表对象 前面提到过想在对象中返回子表时,可以使用压缩成一个字符串的子表字段,一般适合数据比较简单的场合。 另一种方式是用$subobj来定义子表对象。 例如在获取订单时,同时返回订单日志,设计接口如下: Ordr.get() -> {id, ..., @orderLog?}返回orderLog: {id, tm, dscr, action} 订单日志子表。示例{id: 1, dscr:

筋斗云接口编程 / 虚拟字段(二)

计算字段 在定义虚拟字段时,”res”也可以是一个计算值,或一个很复杂的子查询。 例如表OrderItem是Ordr对象的一个子表,表示订单中每一项产品的名称、数量、价格: @Ordr: id, userId, status(2), amount, dscr(l)@OrderItem: id, orderId, name, qty, price一个订单对应多个产品项:OrderItem(

筋斗云接口编程 / 虚拟字段(二)

计算字段 在定义虚拟字段时,”res”也可以是一个计算值,或一个很复杂的子查询。 例如表OrderItem是Ordr对象的一个子表,表示订单中每一项产品的名称、数量、价格: @Ordr: id, userId, status(2), amount, dscr(l)@OrderItem: id, orderId, name, qty, price一个订单对应多个产品项:OrderItem(

筋斗云接口编程 / 虚拟字段

虚拟字段 前面已经学习过怎样把一个数据库中的表作为对象暴露出去。 其中,表的字段就可直接映射为对象的属性。对于不在对象主表中定义的字段,统称为虚拟字段。 通过$vcolDefs来定义虚拟字段,最简单的一类虚拟字段是字段别名,比如 class AC1_Ordr extends AccessControl{protected $vcolDefs = [[ "res" => ["t0.id o

筋斗云接口编程 / 虚拟字段

虚拟字段 前面已经学习过怎样把一个数据库中的表作为对象暴露出去。 其中,表的字段就可直接映射为对象的属性。对于不在对象主表中定义的字段,统称为虚拟字段。 通过$vcolDefs来定义虚拟字段,最简单的一类虚拟字段是字段别名,比如 class AC1_Ordr extends AccessControl{protected $vcolDefs = [[ "res" => ["t0.id o

筋斗云接口编程 / 分页机制

分页机制 query操作默认支持分页(paging), 一般调用形式为 Ordr.query(_pagekey?, _pagesz?=20) -> {nextkey?, total?, @h, @d}参数:- _pagesz: Integer. 页大小,默认为20条数据。- _pagekey: String (一般是数值). 首次查询不用填写(或填0),而下次查询时应根据上次调用时返回数据

筋斗云接口编程 / 对象型接口(四)

定制可访问数据 除了限制用户可以访问哪些表和字段,还常会遇到一类需求是限制用户只能访问自己的数据。 [任务] 用户登录后,可以添加订单、查看自己的订单。 我们在设计文档中设计接口如下: 添加订单Ordr.add()(amount) -> id查看订单Ordr.query() -> tbl(id, userId, status, amount)Ordr.get(id) -> { 同q

筋斗云接口编程 / 对象型接口(四)

定制可访问数据 除了限制用户可以访问哪些表和字段,还常会遇到一类需求是限制用户只能访问自己的数据。 [任务] 用户登录后,可以添加订单、查看自己的订单。 我们在设计文档中设计接口如下: 添加订单Ordr.add()(amount) -> id查看订单Ordr.query() -> tbl(id, userId, status, amount)Ordr.get(id) -> { 同q

筋斗云接口编程 / 对象型接口(三)

绑定访问控制类与权限 前面在讲函数型接口时,提到权限检查用checkAuth函数来实现。 在对象型接口中,通过绑定访问控制类与权限,来实现不同角色通过不同的类来控制。 比如前例中ApiLog对象接口允许员工登录(AUTH_EMP)后访问,只要定义: class AC2_ApiLog extends AccessControl{...} 那么为什么AC2前缀对应员工权限呢? 在api

筋斗云接口编程 / 对象型接口(三)

绑定访问控制类与权限 前面在讲函数型接口时,提到权限检查用checkAuth函数来实现。 在对象型接口中,通过绑定访问控制类与权限,来实现不同角色通过不同的类来控制。 比如前例中ApiLog对象接口允许员工登录(AUTH_EMP)后访问,只要定义: class AC2_ApiLog extends AccessControl{...} 那么为什么AC2前缀对应员工权限呢? 在api

筋斗云接口编程 / 对象型接口(二)

定制操作类型和字段 对象接口通过继承AccessControl类来实现,默认允许5个标准对象操作,可以改写属性$allowedAc来限定允许的操作: class AC_ApiLog extends AccessControl{protected $allowedAc = ["get", "query"];// 默认值为 ["add", "get", "set", "del", "query"

筋斗云接口编程 / 对象型接口(二)

定制操作类型和字段 对象接口通过继承AccessControl类来实现,默认允许5个标准对象操作,可以改写属性$allowedAc来限定允许的操作: class AC_ApiLog extends AccessControl{protected $allowedAc = ["get", "query"];// 默认值为 ["add", "get", "set", "del", "query"

筋斗云接口编程 / 对象型接口

对象型接口 为了更好的理解之后章节的示例,我们先了解一下示例中用到的数据模型。 [数据模型描述方式] 下面是几个数据表,每个表都应有个作为主键的id字段,是可自动增长的整数类型,即使是关联表也应定义id字段作为主键。 用户:@User: id, uname, phone(s), pwd, name(s), createTm订单:(用Ordr而不是Order词是避免与SQL关键字冲突。)

筋斗云接口编程 / 对象型接口

对象型接口 为了更好的理解之后章节的示例,我们先了解一下示例中用到的数据模型。 [数据模型描述方式] 下面是几个数据表,每个表都应有个作为主键的id字段,是可自动增长的整数类型,即使是关联表也应定义id字段作为主键。 用户:@User: id, uname, phone(s), pwd, name(s), createTm订单:(用Ordr而不是Order词是避免与SQL关键字冲突。)

筋斗云接口编程 / 常用操作(二)

接口返回 函数应返回符合接口原型中描述的对象,框架会将其转为最终的JSON字符串。 比如登录接口要求返回{id, _isNew}: login(uname, pwd, _app?=user) -> {id, _isNew?} 因而在api_login中,返回结构相符的对象即可: $ret = ["id" => $id,"_isNew" => 1];return $ret; 最终

筋斗云接口编程 / 常用操作(二)

接口返回 函数应返回符合接口原型中描述的对象,框架会将其转为最终的JSON字符串。 比如登录接口要求返回{id, _isNew}: login(uname, pwd, _app?=user) -> {id, _isNew?} 因而在api_login中,返回结构相符的对象即可: $ret = ["id" => $id,"_isNew" => 1];return $ret; 最终

筋斗云教程(二): 系统分析与设计

系统分析与设计 请记住,设计先于编码。筋斗云框架使用DESIGN.wiki文件作为主设计文档。需要从以下几个角度来完成应用系统的设计: 概要设计: 描述需求, 定义概念/术语, 确定系统数据模型数据库设计: 定义数据库表及字段。前端应用接口: 定义前端应用接口或应用内的页面。交互接口: 定义前端访问后端的API接口。 需求分析与原型设计 需求一般通过“用例”(Use Case)来描述系统功

php $_SESSION含义,PHP的session概念与语法详细讲解 筋斗云网络

cookie的工作流程 由服务器发送给浏览器一个cookie(牌子) 以后再访问时,由浏览器带着cookie(牌子),服务器检测cookie的信息 如何设置cookie: setcookie()函数 如何读取cookie: $_COOKIE[] 超级全局数组 疑问? 问: cookie由浏览器带着的,那么如何被篡改了,怎么办? 比如:你买的奶酪,你把单据改成"蛋糕",如何防范? 因为cookie