[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Подскажите по ООП
Страницы: 1, 2
Arh
Работаю с PDO,в начале сприпта подключаюсь:
$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
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.