![]() |
Модераторы: korob2001, ginnie |
![]() ![]() ![]() |
|
TP@MB@Y |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 370 Регистрация: 18.12.2004 Где: Москва Репутация: нет Всего: 4 |
Есть объект описанный в модуле DB.pm:
Также есть другие объекты, методы, которых реализуются с помощью SQL-запросов. Допустим один из них:
Непосредственно в скрипте хочется писать так:
Я так подозреваю что можно использовать use base('DB'); Но никак не могу сообразить как более изящно это сделать |
||||||
|
|||||||
afiskon |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 294 Регистрация: 31.3.2011 Где: Россия, Москва Репутация: нет Всего: 4 |
Ну да, use base ИмяРодительскогоКласса; Подробнее про ООП в Perl можно прочитать, извиняюсь за самопиар, тут: http://eax.me/perl5-oop/
|
|||
|
||||
TP@MB@Y |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 370 Регистрация: 18.12.2004 Где: Москва Репутация: нет Всего: 4 |
afiskon, спасибо, ваша статья мне реально помогла
![]() Меня только волнует одна вещь: если создается сразу несколько объектов-наследников DB.pm, то соединений с БД тоже будет несколько? как это в плане производительности? |
|||
|
||||
afiskon |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 294 Регистрация: 31.3.2011 Где: Россия, Москва Репутация: нет Всего: 4 |
Зависит от вашей реализации. Можете хранить в каждом объекте указатель на один dbh, тогда соединение будет одно. Только я не знаю, является ли DBI потокобезопасным и вообще позволяет ли параллельно выполнять два запроса. Впрочем, если у вас не многопоточное приложение, вас это не должно волновать. |
|||
|
||||
vivu |
|
|||
Новичок Профиль Группа: Участник Сообщений: 42 Регистрация: 3.11.2009 Репутация: нет Всего: нет |
Используйте паттерн проектирования "Одиночка" http://ru.wikipedia.org/wiki/%D0%9E%D0%B4%...0.BD.D0.B0_Perl |
|||
|
||||
TP@MB@Y |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 370 Регистрация: 18.12.2004 Где: Москва Репутация: нет Всего: 4 |
имено так и хотелось бы сделать. все запросы будут происходить последовательно. нужно что то типа статической переменной класса. как это в перловом объекте реализуется? |
||||
|
|||||
Pilat66 |
|
||||
Новичок Профиль Группа: Участник Сообщений: 37 Регистрация: 27.1.2009 Репутация: 1 Всего: 1 |
Всё же лучше читать официальную документацию, а не свободное её изложение с добавлением бессмысленных украшений типа скобок. Насчёт надстроек над DBI: в DBI есть почти всё что нужно, надо только прочитать документацию. Например, конструкция ниже записывается в одну строчку ( $dbh->selectall_arrayref($sql, { Slice => {} }) ). $sth->finish; лишнее, если мы всё равно все данные выбираем.
Единственное, для чего я бы использовал такие врапперы - это для добавления прозрачного компилирования запросов, если оно поддерживается. Да и то практической пользы от них не так много как можно было бы подумать. В любом случае соединение с базой стоит выносить за враппер - соединение вещь сложная. |
||||
|
|||||
![]() ![]() ![]() |
Правила форума "Perl" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Perl: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |