1. 程式人生 > >php 擴展之oci8在ThinkPHP上的應用

php 擴展之oci8在ThinkPHP上的應用

oci_8 php手冊 thinkphp

最近突然想到了oci_8的拓展,PHP的一個拓展,有很多函數,翻了翻手冊,看了看ThinkPHP的DB以及DBOracle的驅動文件


這才想明白其中的oci_connect和oci_pconnect以及oci_new_connect的來源

代碼如下

/**
     * 連接數據庫方法
     * @access public
     */
    public function connect($config=‘‘,$linkNum=0) {
        if ( !isset($this->linkID[$linkNum]) ) {
            if(empty($config))  $config = $this->config;
            $pconnect   = !empty($config[‘params‘][‘persist‘])? $config[‘params‘][‘persist‘]:$this->pconnect;
            $conn = $pconnect ? ‘oci_pconnect‘:‘oci_new_connect‘;
            $this->linkID[$linkNum] = $conn($config[‘username‘], $config[‘password‘],$config[‘database‘],C(‘DB_CHARSET‘));//modify by wyfeng at 2008.12.19
            if (!$this->linkID[$linkNum]){
                $this->error(false);
            }
			//這裏的有兩個函數oci_pconnect和oci_new_connect是oci8拓展裏的,oci_connect也是
			//例如:$conn = oci_connect(‘system‘,‘oracle‘,‘192.168.109.132:49161/xe‘);
			//192.168.109.132:49161/xe--->這種字符串連接是簡單連接,需要在oracle10g以上才能使用
			//完整 Oracle Net 連接字符串提供了足夠的連接靈活性。
				//$db = MYDB2 = (DESCRIPTION =
				//(ADDRESS = (PROTOCOL = TCP)
				//(HOST = mymachine.mydomain)(PORT = 1521))
				//(CONNECT_DATA=
				//(SERVER = DEDICATED)
				//(SERVICE_NAME = MYDB.AU.ORACLE.COM)))‘;
			//oci8 擴展始終需要查找 Oracle 庫和消息文件。找不到正確的文件將導致 PHP 返回 Oracle“ORA-12705:Cannot access NLS data files or invalid environment specified”。
            // 標記連接成功
            $this->connected = true;
            //註銷數據庫安全信息
            if(1 != C(‘DB_DEPLOY_TYPE‘)) unset($this->config);
        }
        return $this->linkID[$linkNum];
    }

不是造輪子,而是去理解別人是如何來組織原生的寫法,我覺得ThinkPHP的一些處理還是不錯的。

最近開始覺得oci_8的函數可以看著手冊來試一下。有新的感觸會寫在這裏

本文出自 “一站式解決方案” 博客,請務必保留此出處http://10725691.blog.51cto.com/10715691/1953081

php 擴展之oci8在ThinkPHP上的應用