+ -
当前位置:首页 → 问答吧 → 请教个问题,关于织梦

请教个问题,关于织梦

时间: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然后不就好了么?这样写有什么用意?

作者: k18kk   发布时间: 2010-09-08

作者: mijian   发布时间: 2010-09-08