文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>开始创建 QeePHP 应用程序(2)

开始创建 QeePHP 应用程序(2)

时间:2008-04-12  来源:qeeify


在本教程的第一篇,我们通过 QeePHP 的应用程序生成工具获得了一个应用的雏形。在开始实际编程之前,我们要耐心的做一点准备工作。
虽然我们不是做一个真的 digg.com 网站,但我们最好还是写一个清单,列明需要实现哪些功能。这可是一个非常好的习惯,即便是小程序也应该这样做。
清单很简单:
  • 用户可以提交一个网址和一段说明文字,这样一个提交内容称为一个“收藏”
    • 用户可以稍后修改自己提交的“收藏”
    • 用户可以对一个“收藏”发表评论
    • 用户可以 digg 一个“收藏”,“收藏”每被 digg 一次,就增加一点 digg 值
    • 同一个用户对于同一个“收藏”只能 digg 一次
    • 用户可以修改自己的密码
    • 用户需要注册并登录后才能进行上述操作
    • 访问者可以查看所有的“收藏”
    • 访问者可以点击“收藏”中的链接转到“收藏”的来源网址
    • 根据“收藏”的添加时间和 digg 值,生成最新的和最热门的“收藏”列表页面
    • 为列表页面生成 RSS,为“收藏”阅读页生成该“收藏”所有评论的 RSS
      根据上面的功能清单,我们的 digg 应用需要下面几个对象:

      • User:用来保存用户的登录名、登录密码等信息
      • Favorite:封装了收藏的来源网址、标题和介绍文字
      • Comment:封装用户针对收藏提交的评论
      • Digg:封装是谁对一个收藏进行了 digg 行为

      暂时我们只考虑这四个对象,以便能够尽快开始实际的工作并看到成效。至于未考虑到的细节,则在以后通过重构来完成。
      这四个类的关系很简单:
      User 对象有多个 Favorite 对象,而 Favorite 对象有多个 Comment 对象和 Digg 对象。同时,Comment 对象和 Digg 对象也关联到 User 对象。
      对象间的关系如下图:



      创建数据结构
      除了明确需要的对象及对象间的关系,还要创建合适的数据表来保存这些对象:


      注意其中的 diggs 表有两个主键字段,用于限制一个用户对同一个收藏仅能 digg 一次。
      上述四个表的 SQL 如下:
      CREATE TABLE users
      (
              user_id INTEGER NOT NULL AUTO_INCREMENT,
              username VARCHAR(20) NOT NULL COMMENT '用户名',
              password VARCHAR(70) NOT NULL COMMENT '加密后的密码',
              created DATETIME NOT NULL COMMENT '账户创建时间',
              updated DATETIME NOT NULL COMMENT '账户最后更新的时间',
              PRIMARY KEY (user_id),
              UNIQUE (username)
      ) ;
      CREATE TABLE favorites
      (
              fav_id INTEGER NOT NULL AUTO_INCREMENT,
              user_id INTEGER NOT NULL COMMENT '发布收藏的用户ID',
              title VARCHAR(240) NOT NULL COMMENT '收藏的标题',
              url VARCHAR(240) NOT NULL COMMENT '收藏的来源网址',
              intro TEXT NOT NULL COMMENT '收藏的简介',
              digg_count INTEGER NOT NULL DEFAULT 0 COMMENT 'digg 值',
              comments_count INTEGER NOT NULL DEFAULT 0 COMMENT '收藏的评论数',
              created DATETIME NOT NULL COMMENT '收藏提交的时间',
              updated DATETIME NOT NULL COMMENT '收藏最后更新的时间',
              PRIMARY KEY (fav_id)
      ) ;
      CREATE TABLE comments
      (
              comment_id INTEGER NOT NULL AUTO_INCREMENT,
              fav_id INTEGER NOT NULL COMMENT '评论所属收藏ID',
              user_id INTEGER NOT NULL COMMENT '提交评论的用户ID',
              body TEXT NOT NULL COMMENT '评论内容',
              created DATETIME NOT NULL COMMENT '提交评论的时间',
              PRIMARY KEY (comment_id)
      ) ;
      CREATE TABLE diggs
      (
              user_id INTEGER NOT NULL,
              fav_id INTEGER NOT NULL,
              created DATETIME NOT NULL COMMENT '用户digg的时间',
              PRIMARY KEY (user_id, fav_id)
      ) ;

      可以看到,对象的类名称都是单数,而数据表都是复数形式。虽然不要求一定这样,但稍微规范一点也不是坏事,对吧 :)
      要注意的是,数据表的主键字段都不是简单的“id”,而是加上了前缀,例如“user_id”、“fav_id”等。这样做的好处是在定义对象间的关联时,不需要我们去指定用哪一个字段的值来确定关联,QeePHP 会自己猜测出来。
      ok,现在分析整理工作基本上就做好了。下一篇教程我们将通过 QeePHP 实际操作数据库,看看 QeePHP 是如何简化开发工作的。
      原文地址:
      http://qeeify.com/index.php/2008/03/19/begin-app-2.html
      更多信息,请访问 FleaPHP/QeePHP 开源开发框架官方网站:
      http://www.fleaphp.org/



  • 相关阅读 更多 +
    排行榜 更多 +
    粉末星战 v1.0.0 安卓版

    粉末星战 v1.0.0 安卓版

    休闲益智 下载
    粉末星战 v1.0.0 安卓版

    粉末星战 v1.0.0 安卓版

    休闲益智 下载
    火线反恐部队 v1.2 安卓版

    火线反恐部队 v1.2 安卓版

    飞行射击 下载