加入收藏 | 设为首页 | 会员中心 | 我要投稿 核心网 (https://www.hxwgxz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

在PHP中使用灵巧的体系架构

发布时间:2022-03-11 07:41:29 所属栏目:编程 来源:互联网
导读:很久以前我就想写这篇文章了,但是一直都没有时间。这里并不是想要告诉你怎样做,我希望它可以投石问路,和大家讨论一下如何开发一个好的、扩展性佳的web应用。 我从事开发已经有2-3年了,回望刚开始做的程序,真有点不相信是自己写的,现在我的web开发技巧
  很久以前我就想写这篇文章了,但是一直都没有时间。这里并不是想要告诉你怎样做,我希望它可以投石问路,和大家讨论一下如何开发一个好的、扩展性佳的web应用。
 
  我从事开发已经有2-3年了,回望刚开始做的程序,真有点不相信是自己写的,现在我的web开发技巧已经得到了很大的提高,例如sourceForge http://sourceforge.net/)就是我较为成熟的一个作品,代码都被分成各种的类和函数。数据库的结构也很清晰。站点的不同部分都是与其它部分独立开来的。
 
 
  在这个图中,HTML接口或者直接调用API层,或者调用一个HTML工具库(例如产生弹出窗口等),而那些库通过一个数据库抽象层可调用数据库(这样你就不必绑定在某种数据库上)。
 
  基本的要点
 
  对于一个灵巧的体系来说,有以下基本的要点:
 
  1、数据库独立
 
  2、表示层独立
 
  3、便于修改
 
  4、面向对象或者至少拆成函数库调用
 
  这些都是我想到的,除了以上提到的外,肯定还有其它的要点,你可以在论坛中提出来。
 
  以下就让我们详细地讨论一下以上各点:
 
  1、数据库独立
 
  你在设计的时候,或许不会知道自己的站点的负担究竟有多大,应此你应该记住一点,不能绑定在轻量级的数据库上,例如MS Access或者其它。因此你应该考虑到扩展性,如果更换数据库的话,你不用做太大的改动,甚至不用做什么改动,这是最理想的。
 
  使用PHP时,对于各种数据库的函数调用都是不同的,你需要针对使用的数据库进行不同的编码。为了改变这种情况,你可以使用一个数据库抽象层,例如类似PHPLib或者其它人开发的库。
 
  2、表示层独立
 
  假如你要开发一个真正巨大、复杂的应用,你就必需开始考虑数据库的接口问题,这样你可以少做很多复制和粘贴的工作。例如你需要让你的站点具有WAP功能,以便移动电话的用户可以访问到它。如果你的应用设计得好的话,你只需要写一个轻便的WAP表示层调用所有你的数据库访问对象就行了,但是,如果你的应用体系设计得不好,你就可能需要重新写一个,这样你就需要同时维护一个HTML版本和一个WAP版本。
  
  HTML类的例子
 
  以下为引用的内容:
  //连接数据库
  require ("database.php");
 
  //通常使用的HTML头部/页脚
  require ("html.php");
 
  //数据访问库类
  require ("bug_data.php");
 
  echo site_header("Page Title");
 
  echo "
 
  Updating A Bug
 
  ";
 
  if (bug_data_update($field1,$field2,$field3)) {
 
  echo "
 
  Update Failed!
  ";
 
  } else {
 
  echo "
 
  Updated Bug Successfully
  ";
  //显示全局错误字符串
  echo $feedback;
  }
 
  echo site_footer();
 
  ?>
 
  Example Data Access Lib
 
  /**
  * 控制更新数据库中的一个bug
  * 进行数据有效性和安全的检查,并且在成功时返回true,
  * 失败时返回false
  *
  *
  */
 
  function bug_data_update ($field1,$field2,$field3) {
  //全局字符串,返回错误
  global $feedback;
 
  //$field1 and $field2 are required
  if (!$field1 || !$field2) {
  $feedback="Field 1 And Field 2 Are Required";
  return false;
  }
 
  //确认用户有权更新
  if (!user_isadmin()) {
  $feedback="You Must Be An Admin To Update a Bug";
  return false;
  }
 
  //现在可以更新该bug
 
  $result=db_query("UPDATE bug ".
  "SET field2='$field2',".
  "field3='$field3' ".
  "WHERE id='$field1'");
 
  //现在检查你的语句是否执行成功
  if (!$result) {
  //update failed
  return false;
  } else {
  return true;
  }
  }
 
  ?>
 
  3、便于修改
 
  你当然不会在整个应用中都使用绝对的URL,不过我还要求更进一步,颜色的选择、元素的名字、字体和其它可能的选项最好也不是绝对的,它们应该在一个配置文件中设置,并且在每一页中将该文件包含进来。站点的风格也应该独立开来--这样你就无需在每个页面都进行拷贝粘贴的工作,我通常都将这些HTML放在一个函数中,然后就可以在需要时调用。
 
  对于数据库密码、数据库连接等,同样也放在数据库抽象层中。
  
  肯定我还有一些地方没有想到,因此请提出你的想法。特别是,你写了一个很大、很复杂的应用,我很想知道如果要你重新再写一次,你会建立怎样的体系并且会做什么改变。

(编辑:核心网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读