Вообще вернусь к теме про коннектор, ты показывал наследование, но это немного не то, вообще не хочешь хороший пример но я его приведу, но это лучше чем кучу раз наследовать.
Имеем конфиг например такой
$config['database']['default'] = array(
'user' => 'username',
'password' => '',
'host' => '127.0.0.1',
'database' => 'test_db',
'type' => 'mysql'
);
Имеем такой класс
Class Connection{
private static $connection = array();
private static $config = array();
final public static function setupConfig(array $config){
if(empty(self::$config)
self::$config = $config;
else
throw new Exception('Конфиг уже подключен');
}
final public function getConnection($server = 'default'){
if(isset(self::$connection[$server]){
return self::$connection[$server];
}
if(empty(self::$config){
throw new Exception('Конфиг еще не подключен');
}
if(!isset(self::$config[$server]){
throw new Exception('Конфигурация для '.$server.' не найдена');
}
$config = self::$config[$server];
self::$connection[$server] = new PDO($config['type'].':host='.$config['host'].';dbname='.$config['database'], $config['user'], $config['password']);
self::$connection[$server]->exec("SET CHARACTER SET utf8");
return self::$connection[$server];
}
}
мануал по PDO
http://www.php.net/manual/ru/pdo.connections.phpДалее этот класс никак не меняется, он используется для реализации пула подключений, то есть несколько серверов и тд, и использование только одно соединения. И в моделе используем такое
class DbModel{
protected $_connection = 'default';
final public function getConnection(){
return Connection::getConnection($this->_connection);
}
public statuc function instance(){
return new self();
}
}
Теперь самое интересное использование
Class User extends DbModel{
const TABLE ='tbl_user';
public function findByUsername($username){
$this->getConnection()->quote($username, PDO::PARAM_STR);
$stmt = $this->getConnection()->prepare("SELECT * FROM ' .self::TABLE. ' where name = '?'");
$user = $stmt->execute(array($username))->fetch(PDO::FETCH_ASSOC);
return $user;
}
}
Ну и использование в виде простого примера
if($formValid){
$user = User::instance()->findByUsername($_POST['username']);
if($user){
if(md5($_POST['password']) === $user['password']){
Ура мы авторизовались
}
}
}
Пример на 90% рабочий, но возможны синтасические ошибки, так как писал на коленке xD