在PHP中使用灵巧的体系架构
发布时间:2022-03-07 16:32 所属栏目:121 来源:互联网
导读:很久以前我就想写这篇文章了,但是一直都没有时间。这里并不是想要告诉你怎样做,我希望它可以投石问路,和大家讨论一下如何开发一个好的、扩展性佳的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放在一个函数中,然后就可以在需要时调用。 对于数据库密码、数据库连接等,同样也放在数据库抽象层中。 肯定我还有一些地方没有想到,因此请提出你的想法。特别是,你写了一个很大、很复杂的应用,我很想知道如果要你重新再写一次,你会建立怎样的体系并且会做什么改变。 (编辑:ASP站长网) |
相关内容
网友评论
推荐文章
热点阅读