Changeset 18605


Ignore:
Timestamp:
2010/03/05 10:36:42 (11 years ago)
Author:
Seasoft
Message:

#618 (変数名「objDbConn」をグローバル・ローカル双方で別名にしたい) 実装
#619 (SET NAMES utf8 の発行は、接続時のみに) 実装
#620 (SC_DbConn 複数のコネクションを保持したい) 実装

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/comu-ver2/data/class/SC_DbConn.php

    r18593 r18605  
    2525require_once($current_dir . "/../module/DB.php"); 
    2626 
    27 $objDbConn = ""; 
     27$g_arr_objDbConn = array(); 
    2828 
    2929class SC_DbConn { 
     
    3939    // コンストラクタ 
    4040    function SC_DbConn($dsn = "", $err_disp = true, $new = false){ 
    41         global $objDbConn; 
     41        global $g_arr_objDbConn; 
    4242 
    4343        // Debugモード指定 
     
    4646        $options['persistent'] = PEAR_DB_PERSISTENT; 
    4747 
     48        if (strlen($dsn) >= 1) { 
     49            $this->dsn = $dsn; 
     50        } elseif (defined('DEFAULT_DSN')) { 
     51            $this->dsn = DEFAULT_DSN; 
     52        } else { 
     53            // XXX 以前の仕様を継承しているが、意図が良く分からない。(2010/03/03 Seasoft 塚田) 
     54            return; 
     55        } 
     56 
    4857        // 既に接続されていないか、新規接続要望の場合は接続する。 
    49         if(!isset($objDbConn->connection) || $new) { 
    50             if($dsn != "") { 
    51                 $objDbConn = DB::connect($dsn, $options); 
    52                 $this->dsn = $dsn; 
    53             } else { 
    54                 if(defined('DEFAULT_DSN')) { 
    55                     $objDbConn = DB::connect(DEFAULT_DSN, $options); 
    56                     $this->dsn = DEFAULT_DSN; 
    57                 } else { 
    58                     return; 
    59                 } 
     58        if (!isset($g_arr_objDbConn[$this->dsn]) || !isset($g_arr_objDbConn[$this->dsn]->connection)) { 
     59            $new = true; 
     60        } 
     61 
     62        if ($new) { 
     63            $this->conn = DB::connect($this->dsn, $options); 
     64            $g_arr_objDbConn[$this->dsn] = $this->conn; 
     65 
     66            if (DB_TYPE == 'mysql') { 
     67                $g_arr_objDbConn->query('SET NAMES utf8'); // FIXME mysql_set_charset を使える環境では、その方が良さそう (2010/03/03 Seasoft 塚田) 
     68                $g_arr_objDbConn->query("SET SESSION sql_mode = 'ANSI'"); 
    6069            } 
    61         } 
    62  
    63         if (DB_TYPE == 'mysql') { 
    64             $objDbConn->query('SET NAMES utf8'); 
    65             $objDbConn->query("SET SESSION sql_mode = 'ANSI'"); 
    66         } 
    67          
    68         $this->conn = $objDbConn; 
     70        } else { 
     71            $this->conn = $g_arr_objDbConn[$this->dsn]; 
     72        } 
     73 
    6974        $this->err_disp = $err_disp; 
    7075        $this->dbFactory = SC_DB_DBFactory_Ex::getInstance(); 
Note: See TracChangeset for help on using the changeset viewer.