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';
}
}我们修改一下Database.php文件
<?php
namespace Frame;
class Database
{
static protected $db;//保存实例
private function __construct(){}//禁止new
private function __clone() {}//禁止克隆
static public function getInstance()
{
if (self::$db) {
return self::$db;
} else {
self::$db = new self();
return self::$db;
}
}
}index.php中调用
<?php
define('BASEDIR',__DIR__);
include BASEDIR.'/Frame/Loader.php';
spl_autoload_register('\\Frame\\Loader::autoload');
$db = \Frame\Database::getInstance();//保证到数据库的连接只有一个我们现在可以把之前的工厂模式和单例模式结合起来。 修改Factory.php
<?php
namespace Frame;
class Factory
{
static public function createDatabase()
{
//$db = new \Frame\Database();//工厂模式
$db = Database::getInstance();//结合单例模式的工厂模式
return $db;
}
}index.php中调用
<?php
define('BASEDIR',__DIR__);
include BASEDIR.'/Frame/Loader.php';
spl_autoload_register('\\Frame\\Loader::autoload');
\Frame\Factory::createDatabase();