ООП и глобальные объекты

ExcluZZ

Новичок
ООП и глобальные объекты

Помогите разобраться, уже голова кипит..
Вот есть у меня класс database, в нем несколько методов для работы с MySQL..
Когда я создаю другие классы, например класс page который будет из бд брать настройки для данной страницы сайта, мне каждый раз, в каждой функции создавать объект класса database??? чтобы работать с бд???
Еще пробовал объект класса бд засунуть в $GLOBALS, работает...
Как правильно вообще это делается, я перерыл все что мог в инете..
 

Fortop

Новичок
если объект нужен один на всех - то синглтон.

PHP:
$db = DB::getInstance();
Если других классов будет много, и вдруг появятся другие БД и захочется гибкости, то
PHP:
$db = 'somecondition' ? DB1::getInstance(): DB::getInstance();
//или
$db = DB::factory($someconfig);

$obj = new MyObj(array('db' => $db));
 

ExcluZZ

Новичок
можно немного поподробней... у меня будет много классов которые будут использовать различные методы класса database, вот допустим:

в классе дб у меня
function блабла1
function блабла2

как мне теперь в классе page обратиться к функции блабла1 или блабла2 например в методе

function getpageparams{

???????

}
 

Fortop

Новичок
ExcluZZ
Я вроде как уже привел.

Или создаем зависимость и напрямую в классе используем

PHP:
DB::getInstance()->блабла1()
или передаем объект БД в класс, а дальше его уже используем как нам хочется.
PHP:
$obj = new MyObj(array('db' => $db));
class MyObj {
    //...  конструктор опущен

    function getpageparams() {
        $this->_db->блабла1();
    }
}
// или
class MyObj
    function getpageparams(DB $db) {
        $db->блабла1();
    }
}
 

ExcluZZ

Новичок
Из этого всего я вынес суть для себя..
Паттерн синглтон, т.е. создается метод через который вызывается объект, или отдается ссылка на него если он создан.. т.е. получается что объект единственный и ссылку на него можно получить в любой момент..
правильно понял?)))

-~{}~ 19.04.10 13:21:

еще вопрос такой, простенький шаблонизатор, еще какие-то общие классы.. тоже можно синглтонами сделать?
 

craz

Нестандартное звание
а случаем не наследованием решается этот вопрос?
 

ExcluZZ

Новичок
как можно унаследовать класс шаблонизатора от класса бд, или класс page который формирует навигацию и т.п. от чего наследовать? о_О
имхо тут наследованием и не пахнет..
 
Сверху