|
603 / 578 / 103
Регистрация: 16.07.2012
Сообщений: 1,762
|
||||||
работа с бд06.12.2012, 20:20. Показов 1940. Ответов 10
Хочу написать скрипт для работы с бд.
Цель - он должен работать с любым типом бд и легко встраиваться в любые приложения. За основу выбрал PDO, так как в принципе функции для работы с любой базой одинаковы, за исключением подключения, решил сделать следующим образом : класс mapper в котором будет непосредственно обертка для pdo; классы-драйвера, с подключением к бд, т.е получающие обьект класса pdo и класс db, через который будет осуществлятся доступ ко всей этой структуре Т.е работа примерно должна выглядеть так Идет обращение к классу db, который в зависимости от параметров записанных в конфигурационном файле, создает обьект класса-драйвера (mysql, sqlite и т.д), который возвращает обьект класса pdo в класс db. Далее этот обьект из класса передается в качестве аргумента в класс mapper при создании екземрляра. Екземпляр класса mapper сохраняется в статическом свойстве класса db, ну и соответственно, при последуюших обращениях возвращается это свойство с обьектом mapper. В итоге писал писал и добисался до такого Кликните здесь для просмотра всего текста
Получился класс просто с одним статическим методом, т.е для получения обьекта просто нужно обратиться к методу init() \core\database\RK_DB::init() не создавая обьекта класса db. Так вот вопрос правильный ли у меня ход мыслей в этом направлении? И вообще можно ли делать такие классы в которых не создаются обьекты, как это может повлиять при дальнейшем расширении? И нужно ли обращаться из этого класса к классу Config или может конфигурационные настройки необходимо передавать каким то другим способом?
0
|
||||||
| 06.12.2012, 20:20 | |
|
Ответы с готовыми решениями:
10
Работа - проведение обучающих семинаров по C#. Работа по выходным дням ( сб-вс - 32 часа). От 30 000р. Нужна летиратура, в которой бы описывались работа с событиями, работа с элементами управления Количество подведенного и отведенного тепла, работа сжатия, работа расширения |
|
270 / 226 / 11
Регистрация: 20.04.2012
Сообщений: 817
|
||||||||||||
| 07.12.2012, 11:04 | ||||||||||||
|
что бы получать разные драйверы нужна фабика, а не сингелтон. сингелтон вобще применительно к разработке классов для СУБД не приемлем.
в идеале API должно выглядеть так:
0
|
||||||||||||
|
603 / 578 / 103
Регистрация: 16.07.2012
Сообщений: 1,762
|
||||||||||
| 07.12.2012, 12:11 [ТС] | ||||||||||
|
Добавлено через 22 минуты Добавлено через 5 минут вообщем у меня сейчас поучилось так, Кликните здесь для просмотра всего текста
Если вам не трудно не могли бы вы описать, как по вашему мнению должна строиться вся эта структура, может с какими то отдельными примерами?
0
|
||||||||||
|
1178 / 1128 / 94
Регистрация: 31.05.2012
Сообщений: 3,060
|
||
| 07.12.2012, 12:14 | ||
|
Добавлено через 1 минуту Вот вам пример из популярного фв https://github.com/yiisoft/yii... n.php#L271
0
|
||
|
603 / 578 / 103
Регистрация: 16.07.2012
Сообщений: 1,762
|
|
| 07.12.2012, 12:27 [ТС] | |
|
т.е получается что нужно открыть конструктор, но как же тогда быть с вызовами этого класса из разных мест, ведь при каждом создании обьекта будет открываться новое соединение pdo?
0
|
|
|
1178 / 1128 / 94
Регистрация: 31.05.2012
Сообщений: 3,060
|
|
| 07.12.2012, 12:33 | |
|
ну вы можете внутри держать разные соединения.
DB::getInstance()->conn1->query(...); или же соединение будет создаваться вашим приложением и хранится где то в приложении, как это сделано в том же Yii.
0
|
|
|
270 / 226 / 11
Регистрация: 20.04.2012
Сообщений: 817
|
||||
| 07.12.2012, 12:40 | ||||
|
у меня там ошибка, я как бы не принял во внимание что
0
|
||||
|
603 / 578 / 103
Регистрация: 16.07.2012
Сообщений: 1,762
|
||||||||
| 07.12.2012, 13:01 [ТС] | ||||||||
|
Добавлено через 4 минуты и выглядеть он должен примерно так? Кликните здесь для просмотра всего текста
0
|
||||||||
|
1178 / 1128 / 94
Регистрация: 31.05.2012
Сообщений: 3,060
|
||||
| 07.12.2012, 13:13 | ||||
|
0
|
||||
|
270 / 226 / 11
Регистрация: 20.04.2012
Сообщений: 817
|
|||||||||||
| 07.12.2012, 16:16 | |||||||||||
|
что такое RK_Mapper?
Добавлено через 4 минуты
0
|
|||||||||||
|
603 / 578 / 103
Регистрация: 16.07.2012
Сообщений: 1,762
|
||
| 07.12.2012, 17:14 [ТС] | ||
|
а в интерфейсе там только один метод getDriver, который возвращает обьект pdo, ну а для чего она, ну наверное что бы никакой левый класс туда не затерся))
0
|
||
| 07.12.2012, 17:14 | |
|
Помогаю со студенческими работами здесь
11
Работа формы в фоне, вне фокуса (работа с раскладкой клавиатуры) Работа с Меню. Сохранение, печать, создать новый. Работа с рисованием
Работа с файлом (корректный код, некорректная работа программы) Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
|
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма).
На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
|
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ *
Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам
Кирхгофа, решает её и находит:
токи, напряжения и их 1 и 2 производные при t = 0;. . .
|
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым.
Но восстановить их можно так.
Для этого понадобится консольная утилита. . .
|
|
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
|
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11
— это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
|
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11
Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
|
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
|