1
回答
有关工厂模式用Db基类创造mysql操作句柄的问题
利用AWS快速构建适用于生产的无服务器应用程序,免费试用12个月>>>   

我模拟thinkphp的数据库操作机制  写了一个Db.class.php基类

大体思想是这样 每当我们要操作数据库的时候 我们实例化这个基类 把参数和数据库类型传进去 动态地加载各数据库驱动文件   会得到一个实际的数据库操作句柄

现在的问题是:thinkphp是把这个工厂模式写在Db.class.php的一个静态方法里 Db::getInstance

返回的是一个实际数据库对象实例

而我是把这个特性写在Db类的构造函数里

虽然我这样写

$this->dbType=getConfig('db_type');
$this->config=$config;

include_once dirname(__FILE__).'/drivers/'.$this->dbType.'.class.php';

$db_class = ucwords($this->dbType);

if(class_exists($db_class))
{
    $dataInterface = new $db_class($config);
}
else
{
    echo $db_class.'类不存在';
    return false;
}

return $dataInterface;

但是好像就是得不到mysql的实例  访问不了Mysql.class.php里的方法 当我new出一个Db类的时候

执行$db->    而IDE也只是提示Db.class.php里Db类的方法 这是为什么呢?

是不是工厂模式不能写在构造函数里 只能写在静态方法里?????

求牛人解答 不胜感激

举报
walden
发帖于5年前 1回/237阅
顶部