- 论坛徽章:
- 0
|
剛寫了一個pdo的class大家可否給點意見?有沒有可改善的地方?
- <?php
- class Database{
- var $host;
- var $userName;
- var $userPwd;
- var $port='3306';
- var $name;
- var $pconnect=true;
- var $charset='UTF-8';
- var $encoding='UTF-8';
-
- var $pdo;
- var $result;
- var $format='record';
-
- public function __construct($db){
- $this->host=$db['host'];
- $this->userName=$db['userName'];
- $this->userPwd=$db['userPwd'];
- $this->port=$db['port']!=''?$db['port']:$this->port;
- $this->name=$db['name'];
- $this->pconnect=$db['pconnect']!=''?$db['pconnect']:$this->pconnect;
- $this->charset=$db['charset']!=''?$db['charset']:$this->charset;
- $this->encoding=$db['encoding']!=''?$db['encoding']:$this->encoding;
- }
-
- public function connect(){
- try{
- $database="mysql:host={$this->host};port={$this->port};dbname={$this->name}";
- $this->pdo = new PDO($database, $this->userName, $this->userPwd, array(PDO::ATTR_PERSISTENT => $this->pconnect));
- //dbLog($database,'debug',$db,$xml);
- $this->pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
- $this->pdo->setAttribute(PDO::ATTR_TIMEOUT,5);
- return $this->pdo;
- } catch (PDOException $e) {
- throw $e;
- }
- }
-
- function setNames(){
- $str="SET NAMES '{$this->charset}'";
- $this->pdo->exec($str);
- }
-
- function exec($sql){
- try{
- //dbLog($sql,'sql',$db,$xml);
- return $this->pdo->exec($sql);
- } catch (PDOException $e) {
- throw $e;
- }
- }
-
- function query($sql){
- try{
- //dbLog($sql,'sql',$db,$xml);
- return $this->pdo->query($sql);
- } catch (PDOException $e) {
- throw $e;
- }
- }
- function setFormat($format){
- $format=strtolower($format);
- if (in_array($format,array('xml','json','record'))){
- $this->format=$format;
- } else {
- echo 'wrong format';
- }
- }
- function exception($e){
- if ($GLOBALS['cfg']['debug']){
- if ($this->format=='xml'){
- $root = $xml->getElementsByTagName('rows')->item(0);
- $exception = $xml->createElement("exception");
- $root->appendChild($exception);
-
- $msg = $xml->createElement("msg");
- $exception->appendChild($msg);
- $value = $xml->createTextNode(dbParseData($e->getMessage(),$db));
- $msg->appendChild($value);
-
- $file = $xml->createElement("file");
- $exception->appendChild($file);
- $value = $xml->createTextNode(dbParseData($e->getFile(),$db));
- $file->appendChild($value);
-
- $line = $xml->createElement("line");
- $exception->appendChild($line);
- $value = $xml->createTextNode(dbParseData($e->getLine(),$db));
- $line->appendChild($value);
-
- $trace = $xml->createElement("trace");
- $exception->appendChild($trace);
- $value = $xml->createTextNode(dbParseData($e->getTraceAsString(),$db));
- $trace->appendChild($value);
- } else if ($this->format=='json'){
-
- $json=array(
- 'Message'=>$e->getMessage(),
- 'File'=>$e->getFile(),
- 'Line'=>$e->getLine(),
- 'Trace'=>$e->getTraceAsString()
- );
- responseJson($json);
- die();
- } else if ($this->format=='record'){
- echo "<p>";
- echo "Message : " . $e->getMessage() . "<br/>";
- echo "File : " . $e->getFile() . "<br/>";
- echo "Line : " . $e->getLine() . "<br/>";
- echo "Trace : " . $e->getTraceAsString() . "<br/>";
- echo "</p>";
- die();
- }
- }
- }
- }
- ?>
复制代码 |
|