Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
 |
|

21.11.2008, 10:13
|
|
Moderator - Level 7
Регистрация: 07.06.2006
Сообщений: 556
Провел на форуме: 7549607
Репутация:
2702
|
|
вопрос по архитектуре
Небольшой вопрос по архитектуре.
Всем известно, что классы должны быть максимально абстрагированы друг от друга.
Но в моём проекте есть несколько классов, которым требуется объект класса базы данных $db. Каким способом лучше вносить объект $db в эти классы?
Принимать объект $db в качестве агрумента конструктора инстанцируемого класса (с последующим занесением его в отдельное свойство класса) непрактично.
Вносить его ссылочной функцией (которая реализует синглтон) в каждый метод нужного класса - тоже не дело. (и тем более, боже упаси, global'ом)
Наследование нужными классами классa DB - тоже не дело....
Какие ещё варианты посоветуете.
|
|
|

21.11.2008, 14:47
|
|
Познавший АНТИЧАТ
Регистрация: 01.05.2006
Сообщений: 1,021
Провел на форуме: 3424739
Репутация:
921
|
|
а почему ты против global? 0_o
|
|
|

21.11.2008, 15:00
|
|
Moderator - Level 7
Регистрация: 07.06.2006
Сообщений: 556
Провел на форуме: 7549607
Репутация:
2702
|
|
а почему ты против global? 0_o
C твоими познаниями построения архитекры приложений тебе нечего делать в этой теме.
|
|
|

21.11.2008, 15:01
|
|
Динозавр
Регистрация: 10.01.2008
Сообщений: 2,841
Провел на форуме: 9220514
Репутация:
3338
|
|
Если я правильно понял вопрос в принципе вообще, то может быть это поможет:
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;
}
|
|
|

21.11.2008, 15:04
|
|
Moderator - Level 7
Регистрация: 07.06.2006
Сообщений: 556
Провел на форуме: 7549607
Репутация:
2702
|
|
Нет слов. Пожалуйста, те кто ничего не понимает в данной теме, не пишите тут.
|
|
|

21.11.2008, 15:04
|
|
Познающий
Регистрация: 20.11.2008
Сообщений: 68
Провел на форуме: 108674
Репутация:
32
|
|
extends чем не устраивает?
|
|
|

21.11.2008, 15:04
|
|
наркоман с медалью
Регистрация: 07.05.2005
Сообщений: 3,704
Провел на форуме: 19975136
Репутация:
4536
|
|
чем тебе не устраивает мой вариант с общим конструктором?
|
|
|

22.11.2008, 04:11
|
|
Участник форума
Регистрация: 02.09.2008
Сообщений: 101
Провел на форуме: 196792
Репутация:
37
|
|
Вносить его ссылочной функцией (которая реализует синглтон) в каждый метод нужного класса - тоже не дело. (и тем более, боже упаси, global'ом)
На самом деле все не так мрачно. Вполне можно пользовать синглтон (сохранять в поле класса), либо даже глобальный объект - просто это нужно закатать в базовый класс.
Ориентируйся на удобство использования: видимо, должно быть $db-> и сразу то, что нужно
|
|
|

22.11.2008, 19:19
|
|
Pagan Heart
Регистрация: 12.08.2004
Сообщений: 3,791
Провел на форуме: 6490435
Репутация:
2290
|
|
Ой блин... паттерн Registry.
Если объект один, то паттерн Singleton.
P.S. Zend_Registry юзай.
|
|
|

23.11.2008, 06:28
|
|
Moderator - Level 7
Регистрация: 07.06.2006
Сообщений: 556
Провел на форуме: 7549607
Репутация:
2702
|
|
Ой блин... паттерн Registry.
Вопрос немного в другом. Я ищу способ обращения к классам (не важно где они хранятся и чем управляются)
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|