![]() |
|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]()
|
|
| bars80080 |
|
|||
![]() прапор творюет ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 12022 Регистрация: 5.12.2007 Где: Königsberg Репутация: 71 Всего: 315 |
новый мутный вопрос...
вот есть к примеру у меня класс $db = new db(); для работы с базой данных, подключается всегда, так как и нужен всегда далее, в модуле имеется другой класс, который совершает запросы к БД, естественно он использует уже налаженное соединение и функционалом класса db. в методе пишу:
получается, что метод стороннего класса зависит от имени переменной, что мне не очень нравится. как-то у меня сформировалось мнение, что функции и классы должны быть вещью в себе. то есть передаёшь им какие-то параметры, они их и используют. от изменения в другом месте кода должны быть независимы. вот скажите, как вы делаете? или мне опять не беспокоиться? |
|||
|
||||
| Simpliest |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 625 Регистрация: 1.9.2009 Репутация: 1 Всего: 3 |
Синглтон для работы с БД. Коннект - статик свойство.
Все кому нужно работать с БД, работают с этим синглтоном |
|||
|
||||
| bars80080 |
|
|||
![]() прапор творюет ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 12022 Регистрация: 5.12.2007 Где: Königsberg Репутация: 71 Всего: 315 |
||||
|
||||
| youri |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 740 Регистрация: 17.4.2004 Репутация: 6 Всего: 16 |
не все http://wiki.agiledev.ru/doku.php?id=ooad:m...ies_in_php_code независимость это, конечно, хорошо. Но я считаю, что чтобы усложнять должны быть причины. Пока что похоже причина одна. Если измениться название переменной, то надо будет поменять ряд мест в коде. Допустим будет Синглтон. С тем же успехом можно предположить, что название класса может измениться. В статье, кстати, сказано, что привязка к именам классов хуже, чем к именам переменных
а зачем? |
|||
|
||||
| sTa1kEr |
|
|||
|
9/10 программиста ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1553 Регистрация: 21.2.2007 Репутация: 56 Всего: 146 |
Тогда логично было бы использовать какой-либо реестр коннектов к БД. Добавлять получать их через статические методы класса.
|
|||
|
||||
| NewDima |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 922 Регистрация: 20.2.2006 Где: <?here?> Репутация: 10 Всего: 12 |
bars80080, более одного коннекта одновременно тебе нужно? Зачем такая роскошь?
|
|||
|
||||
| sTa1kEr |
|
|||
|
9/10 программиста ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1553 Регистрация: 21.2.2007 Репутация: 56 Всего: 146 |
||||
|
||||
| NewDima |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 922 Регистрация: 20.2.2006 Где: <?here?> Репутация: 10 Всего: 12 |
В таком случае нахождение в коде нескольких переменных для обертки соединений, которые отвечают за коннект (каждая за свой) вижу бессмысленным методом.
ИМХО, должен быть какой-то объект, управляющий коннектами, а ну да, об это и сказал sTa1kEr |
|||
|
||||
| bars80080 |
|
|||
![]() прапор творюет ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 12022 Регистрация: 5.12.2007 Где: Königsberg Репутация: 71 Всего: 315 |
нет, до разных серверов ещё не развился ну, есть у меня интерфейс работы с БД. одно подключение со своей базой использует сам сайт, другое интерфейс. чтобы не заморачиваться на переходе и выставлении установок туда-сюда для интерфейса мы определяем своё подключение, и там уже выставляем нужную ему БД
вообще, задача общая. помимо db есть ещё два класса используемых постоянно. правда, они используются одиножды. есть ещё один класс, который теоритечески может использоваться несколько раз, хотя я пока не реализовал эту задачу, но уже сейчас могу придумать обоснование нужды. и есть частные классы, к примеру, по работе с файлами, по работе с БД, по работе со структурой сайта, дампер, и прочие. они используют вышеупомянутые классы, и везде где нужно приходится писать в методах global $db, $main; уже само по себе неудобно |
|||
|
||||
| NewDima |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 922 Регистрация: 20.2.2006 Где: <?here?> Репутация: 10 Всего: 12 |
Это точно оправдано? Что-то кажется, что никак. У тебя для одного сайта использется более одной базы данных? |
|||
|
||||
| sTa1kEr |
|
|||
|
9/10 программиста ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1553 Регистрация: 21.2.2007 Репутация: 56 Всего: 146 |
А если будет 10 баз, то будете делать 10 коннектов? Самый простой способ использовать некий контейнер, реестр этих объектов, в качестве примера реализации можно привести ZF http://framework.zend.com/manual/en/zend.registry.html Ну и, как уже сказал, Simpliest можно использовать шаблон Singleton. |
|||
|
||||
| bars80080 |
|
|||
![]() прапор творюет ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 12022 Регистрация: 5.12.2007 Где: Königsberg Репутация: 71 Всего: 315 |
у меня для одного сайта используется одна база. но хостинг сразу на несколько сайтов и на несколько баз. из интерфейса одного сайта я имею возможность работать со всеми базами. для чего собственно всё и делалось Добавлено через 1 минуту и 5 секунд нет, одна для сайта и одна для интерфейса работы
мне нужно несколько экземпляров |
|||
|
||||
| icewind |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 393 Регистрация: 11.4.2009 Где: Ростов-на-Дону Репутация: 20 Всего: 20 |
Я в таких случаях использую фабрику. Мне удобнее всего писать так
если уж принципиально использование нескольких коннектов -------------------- ![]() |
|||
|
||||
| NewDima |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 922 Регистрация: 20.2.2006 Где: <?here?> Репутация: 10 Всего: 12 |
icewind, и каждый раз будет создаваться новый объект с новым внутренним состоянием...
|
|||
|
||||
| icewind |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 393 Регистрация: 11.4.2009 Где: Ростов-на-Дону Репутация: 20 Всего: 20 |
NewDima, и почему это?
-------------------- ![]() |
|||
|
||||
![]()
|
| Правила форума "PHP" | |
|
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |