请教个问题,关于织梦
时间:2010-09-08
来源:互联网
$dsql = $db = new DedeSql(false);
class DedeSql
{
var $linkID;
var $dbHost;
var $dbUser;
var $dbPwd;
var $dbName;
var $dbPrefix;
var $result;
var $queryString;
var $parameters;
var $isClose;
var $safeCheck;
//用外部定义的变量初始类,并连接数据库
function __construct($pconnect=false,$nconnect=true)
{
$this->isClose = false;
$this->safeCheck = true;
if($nconnect)
{
$this->Init($pconnect);//调用Init赋值
}
}
function DedeSql($pconnect=false,$nconnect=true)
{
$this->__construct($pconnect,$nconnect);
}
//连接数据库的参数赋值
function Init($pconnect=false)
{
$this->linkID = 0;
$this->queryString = '';
$this->parameters = Array();
$this->dbHost = $GLOBALS['cfg_dbhost'];
$this->dbUser = $GLOBALS['cfg_dbuser'];
$this->dbPwd = $GLOBALS['cfg_dbpwd'];
$this->dbName = $GLOBALS['cfg_dbname'];
$this->dbPrefix = $GLOBALS['cfg_dbprefix'];
$this->result["me"] = 0;
$this->Open($pconnect);//连接数据库 调用Open()
}
//用指定参数初始数据库信息
function SetSource($host,$username,$pwd,$dbname,$dbprefix="dede_")
{
$this->dbHost = $host;
$this->dbUser = $username;
$this->dbPwd = $pwd;
$this->dbName = $dbname;
$this->dbPrefix = $dbprefix;
$this->result["me"] = 0;
}
function SelectDB($dbname)
{
mysql_select_db($dbname);
}
//设置SQL里的参数
function SetParameter($key,$value)
{
$this->parameters[$key]=$value;
}
//连接数据库
function Open($pconnect=false)
{
global $dsql;
//连接数据库
if($dsql && !$dsql->isClose)
{
$this->linkID = $dsql->linkID;
}
else
{
if(!$pconnect)
{
$this->linkID = @mysql_connect($this->dbHost,$this->dbUser,$this->dbPwd);
}
else
{
$this->linkID = @mysql_pconnect($this->dbHost,$this->dbUser,$this->dbPwd);
}
//复制一个对象副本
CopySQLPoint($this);
}
//处理错误,成功连接则选择数据库
if(!$this->linkID)
{
$this->DisplayError("DedeCms错误警告:<font color='red'>连接数据库失败,可能数据库密码不对或数据库服务器出错!</font>");
exit();
}
@mysql_select_db($this->dbName);
$mysqlver = explode('.',$this->GetVersion());
$mysqlver = $mysqlver[0].'.'.$mysqlver[1];
if($mysqlver>4.0)
{
@mysql_query("SET NAMES '".$GLOBALS['cfg_db_language']."', character_set_client=binary, sql_mode='', interactive_timeout=3600 ;", $this->linkID);
}
return true;
}
……
为什么织梦要把实例化的写在外面然后把句柄全局再在类里引用?直接用$this然后不就好了么?这样写有什么用意?
class DedeSql
{
var $linkID;
var $dbHost;
var $dbUser;
var $dbPwd;
var $dbName;
var $dbPrefix;
var $result;
var $queryString;
var $parameters;
var $isClose;
var $safeCheck;
//用外部定义的变量初始类,并连接数据库
function __construct($pconnect=false,$nconnect=true)
{
$this->isClose = false;
$this->safeCheck = true;
if($nconnect)
{
$this->Init($pconnect);//调用Init赋值
}
}
function DedeSql($pconnect=false,$nconnect=true)
{
$this->__construct($pconnect,$nconnect);
}
//连接数据库的参数赋值
function Init($pconnect=false)
{
$this->linkID = 0;
$this->queryString = '';
$this->parameters = Array();
$this->dbHost = $GLOBALS['cfg_dbhost'];
$this->dbUser = $GLOBALS['cfg_dbuser'];
$this->dbPwd = $GLOBALS['cfg_dbpwd'];
$this->dbName = $GLOBALS['cfg_dbname'];
$this->dbPrefix = $GLOBALS['cfg_dbprefix'];
$this->result["me"] = 0;
$this->Open($pconnect);//连接数据库 调用Open()
}
//用指定参数初始数据库信息
function SetSource($host,$username,$pwd,$dbname,$dbprefix="dede_")
{
$this->dbHost = $host;
$this->dbUser = $username;
$this->dbPwd = $pwd;
$this->dbName = $dbname;
$this->dbPrefix = $dbprefix;
$this->result["me"] = 0;
}
function SelectDB($dbname)
{
mysql_select_db($dbname);
}
//设置SQL里的参数
function SetParameter($key,$value)
{
$this->parameters[$key]=$value;
}
//连接数据库
function Open($pconnect=false)
{
global $dsql;
//连接数据库
if($dsql && !$dsql->isClose)
{
$this->linkID = $dsql->linkID;
}
else
{
if(!$pconnect)
{
$this->linkID = @mysql_connect($this->dbHost,$this->dbUser,$this->dbPwd);
}
else
{
$this->linkID = @mysql_pconnect($this->dbHost,$this->dbUser,$this->dbPwd);
}
//复制一个对象副本
CopySQLPoint($this);
}
//处理错误,成功连接则选择数据库
if(!$this->linkID)
{
$this->DisplayError("DedeCms错误警告:<font color='red'>连接数据库失败,可能数据库密码不对或数据库服务器出错!</font>");
exit();
}
@mysql_select_db($this->dbName);
$mysqlver = explode('.',$this->GetVersion());
$mysqlver = $mysqlver[0].'.'.$mysqlver[1];
if($mysqlver>4.0)
{
@mysql_query("SET NAMES '".$GLOBALS['cfg_db_language']."', character_set_client=binary, sql_mode='', interactive_timeout=3600 ;", $this->linkID);
}
return true;
}
……
为什么织梦要把实例化的写在外面然后把句柄全局再在类里引用?直接用$this然后不就好了么?这样写有什么用意?
作者: k18kk 发布时间: 2010-09-08

作者: mijian 发布时间: 2010-09-08
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28