Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   PHP, PERL, MySQL, JavaScript (https://forum.antichat.xyz/forumdisplay.php?f=37)
-   -   вопрос по архитектуре (https://forum.antichat.xyz/showthread.php?t=92815)

[x26]VOLAND 21.11.2008 10:13

вопрос по архитектуре
 
Небольшой вопрос по архитектуре.
Всем известно, что классы должны быть максимально абстрагированы друг от друга.
Но в моём проекте есть несколько классов, которым требуется объект класса базы данных $db. Каким способом лучше вносить объект $db в эти классы?

Принимать объект $db в качестве агрумента конструктора инстанцируемого класса (с последующим занесением его в отдельное свойство класса) непрактично.

Вносить его ссылочной функцией (которая реализует синглтон) в каждый метод нужного класса - тоже не дело. (и тем более, боже упаси, global'ом)

Наследование нужными классами классa DB - тоже не дело....

Какие ещё варианты посоветуете.

Sharky 21.11.2008 14:47

а почему ты против global? 0_o

[x26]VOLAND 21.11.2008 15:00

Цитата:

а почему ты против global? 0_o
C твоими познаниями построения архитекры приложений тебе нечего делать в этой теме.

Pashkela 21.11.2008 15:01

Если я правильно понял вопрос в принципе вообще, то может быть это поможет:

db.php

PHP код:

switch($dbms)
{
    case 
'mysql':
        include(
$phpbb_root_path 'db/mysql.'.$phpEx);
        break;

    case 
'mysql4':
        include(
$phpbb_root_path 'db/mysql4.'.$phpEx);
        break;

    case 
'postgres':
        include(
$phpbb_root_path 'db/postgres7.'.$phpEx);
        break;

    case 
'mssql':
        include(
$phpbb_root_path 'db/mssql.'.$phpEx);
        break;

    case 
'oracle':
        include(
$phpbb_root_path 'db/oracle.'.$phpEx);
        break;

    case 
'msaccess':
        include(
$phpbb_root_path 'db/msaccess.'.$phpEx);
        break;

    case 
'mssql-odbc':
        include(
$phpbb_root_path 'db/mssql-odbc.'.$phpEx);
        break;



[x26]VOLAND 21.11.2008 15:04

Нет слов. Пожалуйста, те кто ничего не понимает в данной теме, не пишите тут.

MuXaJIbI4 21.11.2008 15:04

extends чем не устраивает?

GreenBear 21.11.2008 15:04

чем тебе не устраивает мой вариант с общим конструктором?

Dian 22.11.2008 04:11

Цитата:

Вносить его ссылочной функцией (которая реализует синглтон) в каждый метод нужного класса - тоже не дело. (и тем более, боже упаси, global'ом)
На самом деле все не так мрачно. Вполне можно пользовать синглтон (сохранять в поле класса), либо даже глобальный объект - просто это нужно закатать в базовый класс.
Ориентируйся на удобство использования: видимо, должно быть $db-> и сразу то, что нужно

nerezus 22.11.2008 19:19

Ой блин... паттерн Registry.
Если объект один, то паттерн Singleton.

P.S. Zend_Registry юзай.

[x26]VOLAND 23.11.2008 06:28

Цитата:

Ой блин... паттерн Registry.
Вопрос немного в другом. Я ищу способ обращения к классам (не важно где они хранятся и чем управляются)


Время: 14:27