$Pdo = new PDO ($логиныПароли);
unset($логиныПароли);
В функциях и классах, да и в любых подключаемых скриптах, для работы с базой нужно написать.
global $Pdo;
И спокойно работать дальше.
Сегодня решил сделать класс db чтобы вместо global писать:
$db = new db;
Против глобал ничего не имею, и в моём случае чего то страшного тут чуть меньше чем ноль, к тому же это удобнее.
global $Config,$Tpl,$Pdo; //удобнее чем:
$Config = new config;
$Tpl = new tpl;
$db = new db;
Но захотелось писать по человечески и упростить метод prepare/execute
class db {
#Запрос
function query ($sql = '',$array = array()) {
global $Pdo;
$query = $Pdo->prepare($sql);
$query->execute($array);
return $query;
}
}
Всё отлично работает, но естественно не работают остальные методы типа
$db->LastInsertId(); //и всё в таком духе
Косяк
Если наследовать класс db от pdo, то метод query конечно будет работать, но каждый раз придётся подключаться к базе, к тому же данные для подключения уже не доступны. Не вариант.
$db = new db ($логиныПароли);
Пробовал вернуть объект через return;
class db {
public function __construct() {
global $Pdo;
$this->pdo = $Pdo;
return $this;
}
#Запрос
function query ($sql = '',$array = array()) {
global $Pdo;
$query = $Pdo->prepare($sql);
$query->execute($array);
return $query;
}
}
Но тогда к недостающим методам приходится обращаться так
$db->pdo->lastinsertid();
Так не прокатывает
$this = $Pdo;
return $this
Так почему то тоже
public function __construct() {
global $Pdo;
return $Pdo;
}
Фиг знает как к нему обращаться кроме как через глобальную переменную.
_____________
Промокод предоставляет скидку на заказ домена и/или хостинга reg.ru
BFCC-3895-8804-9ED2