Урок - Расширение возможностей PDO.

Главная » Курсы » Курс PHP5, PDO - PHP Data Objects » Урок - Расширение возможностей PDO.

Обучающий онлайн курс
PHP5, PDO - PHP Data Objects

Лицензия: Копирование запрещено.
↑ 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
  Текущий урок - последний.