↑ PHP5, PDO - PHP Data Objects | ||||
Урок - Расширение возможностей PDO. | ||||
← Предыдущий урок Урок - Режимы обработки ошибок в PDO
|
Текущий урок - последний. |
Рассширение класса PDO для отображения ошибок
define('DEBUG_MODE', TRUE); define('PDO_DSN', 'mysql:dbname=test;host=127.0.0.1'); define('PDO_USERNAME', 'root'); define('PDO_PASSWORD', 'root'); class PDODebug extends PDO { function query($sql, $mode=NULL){ $pdoStatement = parent::query($sql, $mode); if (!$pdoStatement) { echo '<br>Error in sql: '.$sql.'<br>Error:<br>'; print_r($this->errorInfo()); echo '<br>'; return null; } else { return $pdoStatement; } } } class APP{ static protected $pdo = NULL; static function DB(){ if(APP::$pdo === NULL){ if(DEBUG_MODE){ APP::$pdo = new PDODebug( PDO_DSN, PDO_USERNAME, PDO_PASSWORD); }else{ APP::$pdo = new PDO( PDO_DSN, PDO_USERNAME, PDO_PASSWORD); } } return APP::$db; } } // без ошибки APP::DB()->query("INSERT INTO `articles` (`title`, `viewed`) values('PDO Extention 1', '200')"); // с ошибкой APP::DB()->query("INSERT INTO `articles` (`title`, `viewed`) values('PDO Extention 2', 'PDO Extention 2')");
Переопределение метода PDO::getAvailableDrivers() класса PDO
Метод PDO::getAvailableDrivers() не принимает параметров и возвращает массив доступных драйверов. Мы расширим функционал: Если в метод передаётся имя драйвера, то результатом метода должно стать логическое значение - доступен драйвер или нет.
class PDOExt extends PDO{ /** * Проверяет наличие драйвера или возвращает список драйверов */ static getAvailableDrivers($driver = NULL){ $drivers = parent::getAvailableDrivers(); if($driver===NULL){ $return = $drivers; }else{ $return = array_search( $driver, $drivers); } return $return; } }
↑ PHP5, PDO - PHP Data Objects | ||||
Урок - Расширение возможностей PDO. | ||||
← Предыдущий урок Урок - Режимы обработки ошибок в PDO
|
Текущий урок - последний. |