1. 创建连接工厂
<?php
require_once ('inf\IConnectionFactory.php');
class ConnectionFactoryImp implements IConnectionFactory {
function __construct() {
}
/**
* @param unknown_type $url
* @param unknown_type $userName
* @param unknown_type $passWord
*/
public function getConnection($url, $userName, $passWord) {
$conn = mysql_connect ( $url, $userName, $passWord ) or die ( "无法连接MySQL数据库服务器!" );
return $conn;
}
}
?>
2. 创建Session工厂
<?php
require_once ('inf\ISessionFactory.php');
class SessionFactory implements ISessionFactory {
/**
*
*/
public function openSession() {
$session=new Session();
return $session;
}
}
?>
3. 创建Session
<?php
include 'ConnectionFactoryImp.php';
?>
<?php
include 'XMLUtilImp.php';
?>
<?php
require_once ('inf\ISesson.php');
class Session implements ISesson {
public function connectDB() {
$cf = new ConnectionFactoryImp ();
$xmlUtil = new XMLUtilImp ();
$vo = $xmlUtil->XML2VO ( "dbConfig.xml" );
$con = $cf->getConnection ( $vo->getUrl (), $vo->getUserName (), $vo->getPassWord () );
$db = mysql_select_db ( $vo->getDataBaseName () ) or die ( "无法连接数据库!" );
return $con;
}
/**
* @param unknown_type $sql
*/
public function excuteSQL($sql) {
$result = mysql_query ( $sql ); //查询本页数据
return $result;
}
public function closeConnection($con) {
mysql_close ( $con );
}
}
?>
4. 调用
<?php
include 'impl/Session.php';
?>
<?php
$session = new Session ();
$con = $session->connectDB ();
$result = $session->excuteSQL ( "select * from user" );
echo "<table border=1 cellpadding=10><tr>";
for($i = 0; $i < mysql_num_fields ( $result ); $i ++) {
echo "<th>" . mysql_field_name ( $result, $i ) . "</th>";
}
echo "</tr>";
while ( $row = mysql_fetch_row ( $result ) ) {
echo "<tr>";
for($i = 0; $i < mysql_num_fields ( $result ); $i ++) {
echo "<td>" . $row [$i] . "</td>";
}
echo "</tr>";
}
echo "</table>";
mysql_free_result ( $result );
$session->closeConnection ( $con ); //断开连接并释放资源
?>
5. 用到的公共类
<?php
require_once ('vo\DataBaseVO.php');
require_once ('inf\IXMLUtil.php');
class XMLUtilImp implements IXMLUtil {
/**
* @param unknown_type $fileName
*/
public function XML2VO($fileName) {
$xmlDoc = new DOMDocument ();
$xmlDoc->load ($fileName);
$x = $xmlDoc->documentElement;
$vo=new DataBaseVO();
foreach ( $x->childNodes as $item ) {
print $item->nodeName . " = " . $item->nodeValue . "<br />";
if($item->nodeName=="url"){
$vo->setUrl($item->nodeValue);
}else if($item->nodeName=="userName"){
$vo->setUserName($item->nodeValue);
}else if($item->nodeName=="passWord"){
$vo->setPassWord($item->nodeValue);
}else if($item->nodeName=="dataBaseName"){
$vo->setDataBaseName($item->nodeValue);
}
}
return $vo;
}
}
?>
6. VO
<?php
class DataBaseVO {
var $url = "";
var $userName = "";
var $passWord = "";
var $dataBaseName="";
/**
* @return the $url
*/
/**
* @return the $dataBaseName
*/
public function getDataBaseName() {
return $this->dataBaseName;
}
/**
* @param $dataBaseName the $dataBaseName to set
*/
public function setDataBaseName($dataBaseName) {
$this->dataBaseName = $dataBaseName;
}
public function getUrl() {
return $this->url;
}
/**
* @return the $userName
*/
public function getUserName() {
return $this->userName;
}
/**
* @return the $passWord
*/
public function getPassWord() {
return $this->passWord;
}
/**
* @param $url the $url to set
*/
public function setUrl($url) {
$this->url = $url;
}
/**
* @param $userName the $userName to set
*/
public function setUserName($userName) {
$this->userName = $userName;
}
/**
* @param $passWord the $passWord to set
*/
public function setPassWord($passWord) {
$this->passWord = $passWord;
}
}
?>
7. 配置的xml
<?xml version="1.0" encoding="UTF-8"?> <database> <url>127.0.0.1</url> <userName>root</userName> <passWord>123</passWord> <dataBaseName>test</dataBaseName> </database>