index.php 公共部分
define('BASEDIR',__DIR__);
include BASEDIR.'/Frame/Loader.php';
spl_autoload_register('\\Frame\\Loader::autoload');Loader.php
<?php
namespace Frame;
class Loader
{
static function autoload($class)
{
require BASEDIR.'/'.str_replace('\\','/',$class).'.php';
}
}首先我们声明一个接口 IDatabase.php 类来约定适配器的行为。
<?php
namespace Frame;
interface IDatabase
{
public function connect($host, $user, $passwd, $dbname);//链接数据库
public function query($sql); //执行sql语句
public function close(); //关闭数据库
}在Frame目录下创建Database目录,分别创建Mysql.php、Mysqli.php、PDO.php类(实现IDadabase类的方法) Mysql.php类
<?php
namespace Frame\Database;
use Frame\IDatabase;
class Mysql implements IDatabase
{
protected $conn;//数据库连接对象
public function connect($host, $user, $passwd, $dbname)
{
$conn = mysql_connect($host, $user, $passwd);//连接数据库
mysql_select_db($dbname, $conn);//选择数据库
$this->conn = $conn;
}
public function query($sql)
{
$res = mysql_query($sql, $this->conn);
return $res;
}
public function close()
{
mysql_close($this->conn);
}
}Mysqli.php类
<?php
namespace Frame\Database;
use Frame\IDatabase;
class Mysqli implements IDatabase
{
protected $conn;
public function connect($host, $user, $passwd, $dbname)
{
$conn = mysqli_connect($host, $user, $passwd, $dbname);
$this->conn = $conn;
}
public function query($sql)
{
$res = mysqli_query($this->conn, $sql);
return $res;
}
public function close()
{
mysqli_close($this->conn);
}
}PDO.php类
<?php
namespace Frame\Database;
use Frame\IDatabase;
class PDO implements IDatabase
{
protected $conn;
public function connect($host, $user, $passwd, $dbname)
{
$conn = new \PDO("mysql:host=$host;dbanme=$dbname", $user, $passwd);
$this->conn = $conn;
}
public function query($sql)
{
$res = $this->conn->query($sql);
return $res;
}
public function close()
{
unset($this->conn);
}
}index.php中调用,这样开发人员就可以根据自己的环境去使用不同的数据库连接方式了。
<?php
define('BASEDIR',__DIR__);
include BASEDIR.'/Frame/Loader.php';
spl_autoload_register('\\Frame\\Loader::autoload');
$db = new \Frame\Database\Mysql();
//$db = new \Frame\Database\PDO();
//$db = new \Frame\Database\Mysqli();
$db->connect('127.0.0.1','root',123456,'test');
$db->query('show databases');
$db->close();