我正在使用Zend Framework构建一个webapp,我需要建模逻辑或跟踪一些与跟踪目标进度有关的逻辑.

让我举一个示例目标.

USER Needs to Complete All Three of the following:

A) Activity One

B) Activity Two

C) Activity Three

USER Needs to Complete One of the following:

D) Activity Four

E) Activity Five

F) Activity Six

在完成第一组中的所有三个和第二组中的一个完成后,USER已完成该目标.我将如何在PHP中对此进行建模,以便webapp知道目标已经完成以及如何将数据存储在数据库中?

要明确的是,会有许多不同类型的目标,但这些目标在性质上都非常相似.

解决方法:

假设A,B& C和D,E,& F将始终属于目标中的特定组,我会这样设计:

Goal::isComplete()

{

foreach (Group)

{

switch (Group::type())

{

case "all":

TRUE if all complete

break

case "any":

TRUE if any complete

break;

}

}

if all TRUE

return TRUE

}

或者用英语……

然后,您可以将所有活动存储在“活动”表中,并将它们所属的组定义为“组”表的简单ID引用.活动完成后,可以在DB中对其进行标记.

要检查已完成的目标,您只需查找目标所需的每个组.每个组可以是“全部”或“任何”(或其他类似的选项,如“min-2”),这将告诉脚本使用活动完成检查的内容.然后,每个组可以根据其活动返回TRUE或FALSE.假设所有组都是必需的,那么目标很容易被识别为完成或不完整.

数据库可能如下所示:

Activities

- id

- group_id

- name

- completed

- [details about activitiy]

Groups

- id

- goal_id

- type (ENUM: 'any', 'all')

- completed

- [details about group]

Goals

- id

- completed

- [details about goal]

无论何时更新活动,或者遗漏活动并且它们的值始终动态计算出来,都需要主动更新组和目标中的已完成值.

这是否有意义,并做你需要的?

标签:php,models,zend-framework,business-logic,requirements

来源: https://codeday.me/bug/20190701/1342040.html

php建模,如何建模和跟踪PHP中的目标需求相关推荐

  1. 使用卡尔曼滤波实现单目标跟踪过程中的目标运动轨迹预测

    针对目标被遮挡的情况,使用卡尔曼滤波进行轨迹预测,试验表明,具有较好的轨迹预测效果 观测值:传感器读数,因为某些客观原因,可能存在较大误差. 估计值:也称为先验估计,卡尔曼滤波的状态转移方程进行估计. ...

  2. 【视频互动跟踪】通过matlab提取跟踪视频中的目标,并提示备注信息。通过FLash播放器可互动点击查看信息

    1.软件版本 MATLAB2010b 2.本算法理论知识 算法流程如下所示: 读取avi视频  :get_AVI.m 获取灰度视频:vedio_op.m 运动员跟踪  :func_man_catch. ...

  3. 【2016年第6期】情境大数据建模及其在用户行为预测中的应用

    吴书,刘强,王亮 中国科学院自动化研究所智能感知与计算研究中心,北京 100190 摘要:随着大数据时代的到来,信息系统收集了海量情境信息,如舆情信息.环境信息.经济信息等.这些情景大数据提供丰富的细 ...

  4. 建模大师怎么安装到revit中_工程师最爱的REVIT插件,让BIM建模溜到飞起!

    今日BIM公益培训:Revit 如何使用简化的二维图形代替复杂的三维模型平面投影私信--获取视频链接 手绘时代加班到晚上7点,CAD时代加班到晚上12点,BIM时代加班到第二天7点.为什么科技进步,我 ...

  5. 【无标题】【3D建模制作技巧分享】zbrush中如何卡硬边?

    在zbrush制作的过程中,经常会遇到关于硬边的问题.也许是因为你对模型细分了之后,模型本来的硬边就变软了.也许是因为你没有在其他三维软件中把模型的硬边保护线做好.也许是你突然改变想法,想把某个地方雕 ...

  6. 建模语言UML在软件开发中的应用

      建模语言 UML 在软件开发中的应用 摘要:UML( Unified Modeling Language)是建立系统模型和分析业务处理流程强有力的工具,它能够帮助软件开发人员从不同角度描述系统,使 ...

  7. 【3D建模制作技巧分享】zbrush中如何卡硬边?

    在zbrush制作的过程中,经常会遇到关于硬边的问题.也许是因为你对模型细分了之后,模型本来的硬边就变软了.也许是因为你没有在其他三维软件中把模型的硬边保护线做好.也许是你突然改变想法,想把某个地方雕 ...

  8. Revit建模软件:如何在Revit中准确放置族组件?

    Revit建模软件:如何在Revit中准确放置族组件? 如何在Revit中准确放置族组件?今天,我们以螺丝为例来解释这个问题. 设置工作面: 你需要的工作平面是一个垂直或有角度的平面. 如图所示,蓝色 ...

  9. IDEF1x语义建模方法及其在数据库设计中的应用

    IDEF1x语义建模方法及其在数据库设计中的应用 李俊平 (深圳职业技术学院计算机软件工程系 广东深圳 518055) 摘要:IDEF1x是在E-R方法中引入语义的一种数据库概念建模方法,对E-R方法 ...

最新文章

  1. Qt控件大小自适应电脑分辨率问题
  2. 应用容器Application container
  3. java可选项_在Java中链接可选项8
  4. struts2启动报错com/opensymphony/xwork2/spring/SpringObjectFactory.java:220:-1
  5. 2018 CodeM初赛B轮:D.神奇盘子
  6. 9篇前沿文章 | 一览肿瘤基因组及多组学思路
  7. 修改环境变量删除了path
  8. (机器学习)C均值算法(K-Means)之误差平方和推导
  9. 微信公众账号开发教程(一) 基本原理及微信公众账号注册 ——转自http://www.cnblogs.com/yank/p/3364827.html...
  10. Java实现QQ邮件发送
  11. OpenStack Zed:新一代仪表盘 Skyline 正式发布
  12. ZDNS联合中兴为埃塞俄比亚建设国家顶级域名系统
  13. iPhone和iPad等苹果设备自主更新Beta系统
  14. webstorm 快捷键不能用了
  15. IntelliJ IDEA 如何增加运行时候的内存
  16. 在WPF中加载gif动态图片
  17. 数据分析实战-15 一次学会python数据可视化的10种技能
  18. Ciso下简单集线器、交换机实验
  19. Cannot add property 1, object is not extensible
  20. Word设置1之后页码全是1怎么解决?

热门文章

  1. linux下repo是什么文件夹,yum的repo文件详解、以及epel简介、yum源的更换
  2. 自己总结的Unity3d RPG网络游戏 UI逻辑 框架(基于NGUI)
  3. 微信朋友圈分享链接的【图片】设置
  4. php用什么打开_我的php文件怎么打开_如何打开php文件的办法
  5. 【bzoj4887】[Tjoi2017]可乐 矩阵乘法
  6. 产能提升咨询项目阶段评审结果
  7. 程序员工作三年晒出9月工资条,直言加班太累了
  8. 收集一个错误,foxmail发送邮件时报错反馈550 5.7.0 DT:SPM
  9. 计算机组成原理3.6高速缓冲存储器Cache
  10. wetool个人版_wetoo群发下载wetool-咨询