本文通过一个简单的web 应用,演示了 php 和 postgressql 在电子商务中的应用。
不久以前,如果要架构一个严肃的web应用的话,意味着购买价格不菲的cold fusion 许可,以及一个商业的数据库服务程序像sybase 加上 sun 服务器。幸运的是,这样的日子一去不复返了。随着日渐成熟的免费数据库市场以及apache 使用者的大量增长,一些替代产品已经具有相当,甚至超过了这些专有软件的能力。
比较好的开放源码软件的一种是 php,一个很像perl 的脚本语言,以及postgresql,一个很强大的面向对象的数据库。如果把两者结合起来的话,你可以设计从简单的留言簿到一个巨大的基于web 的财务软件。php 提供大脑而 postgres 提供发达的肌肉。
下面介绍一个很基本的 php 购物车和库存应用,充分利用 postgres 的事务功能。源码推渌柿峡梢源?phpbuilder.com 下载。
首先要提到的是应用程序的结构,在我的php web 应用中,我总是首先设置一个综合库,网站的每一个页面都会用到它,取名叫common.php 存放在include 目录。
这个库会处理日常任务,例如数据库连接,用户鉴别,站点的头部/尾部文件等。把这些函数放在一个地方,我们的应用看上去很干净,容易维护。
表一:示范的库代码
common.php:
php
//连接 postgres 数据库
$conn=pg_pconnect("user=tim dbname=db_example");
//看连接是否成功
if (!$conn) {
//如果失败则报告出错
echo pg_errormessage($conn);
exit;
}
//站点的头文件
function site_header ($title) {
return '
';
}
// 页面结尾的 html 代码
function site_footer () {
return '';
}
//一个简单的查询执行函数,用来减少代码
function query($sql) {
global $conn;
return pg_exec($conn,$sql);
}
//让每一个页面自动启动session或者保存 session 状态
session_start();
?>
因此,我们的第一个版本的库已经可以用了,它连接数据库,提供了简单的 html
代码。
我们站点上每一个页面都包括:
php
require ($document_root.'/include/common.php');
echo site_header('示范页面');
/*
页面逻辑处理
*/
echo site_footer();
?>
一般说来,在构建应用程序时,把逻辑和实际的表示(在我们这里就是html)分开是很明智的。因此,我把逻辑放到函数里面。但是php 使用函数调用的方法,缺点是没有标准的出错处理过程,如果函数内部有错的话,呼叫函数的程序不能把把错误信息传递给用户。在其他的语言,例如java 里面,你可以使用 try/catch语句来处理。
我的解决办法是,每个函数总是返回 true 或者 false ,设置一个$feedback全局变量,这样的话,结果就可以测试。现在有一个叫做pear (http://pear.php.net/) 的项目在做标准化错误处理以及数据库存取的努力,
Java Asp PHP .Net XML C/C++ CGI VB Jsp J2ee J2se J2me EJB Servlet Tomcat Resin Struts Weblogic Eclipse ANT GUI JMS Web servise IDEA Webphere Hibernate Spring Jboss Applet Swing Socket Javamail Perl Ajax P2P 安全 模式 框架 测试 开源 游戏
Windows XP Windows 2000 Windows 2003 Windows Me Windows 9.x Linux UNIX 注册表 操作系统 服务器 应用服务器