Forum Webscript.Ru

Программирование => Perl => Тема начата: skooby от 17 Декабря 2007, 21:39:13

Название: Ссылка на дескриптор объекта
Отправлено: skooby от 17 Декабря 2007, 21:39:13
Доброго времени суток. Начну с того, что решил я написать "движок" сайта. Спроектировал все как надо. Функции работы с шаблонам засунул в отдельный модуль, общие функции в другой модуль. Начал писать функции работы с базой столкнулся с такой проблемой. приведу пример:


--- SQL.pm ---- (модуль работы с базой)

package SQL;

use strict;
use CommonFunc;
use DBI;

my $cf = new CommonFunc;
# -----------------------------------------------
sub new
{
my $class = shift;
my $self = {};
return bless $self, $class;
}

# ------ Соединение с базой ---------------------
sub connector
{
my $self = shift;
my $dsn = qq{DBI:mysql:$cf->Config(\'db_name\');$cf->Config(\'db_hostname\')};
my $dbh = DBI->connect($dsn, $cf->Config(\'db_username\'), $cf->Config(\'db_password\'));

return $dbh;
}

sub selector
{
  ...
}
...

1;


Далее в основном скрипте, я вызываю SQL.pm, создаю объект, т.е. связываю модуль и методы хранящиеся в нем. При вызове метода connector(), произойдет соединение и метод возвратит ссылку на дескриптор объекта БД. Вопрос как мне дальше передавать данную ссылку на дескриптор объекта в метод selector() для выборки и в другие методы?

--- script.pl ---
#!Perl.exe -w

use strict;
use lib \'./libs\';
use CGI::Carp qw(fatalsToBrowser);
use SQL; <--------

print "Content-Type: text/html\\n\\n";

my $db = new SQL;
my $sql = qq{SELECT * FROM car_types};
$db->connector();
$db->selector($sql);


Я раньше не писал что-то серьозное и обходился простыми скриптами, а тут такое дело решил ООП использовать, так что возможно очень уродливо получилось, не судите строго  :(
Вообще хотелось бы узнать как это у других реализовано...
Название: Ссылка на дескриптор объекта
Отправлено: commander от 18 Декабря 2007, 11:21:09
skooby
1. какой смысл делать new и не делать connect?
ИМХО:
connector  -> _connector т.е. приватный метод... и вызывать его из констуктора...

2. selector будет на все запросы?

3. похожая структура организованна тут:
http://search.cpan.org/~stellar/SQLayer-1.1/SQLayer.pm
может лучше использовать уже что-то готовое... а не изобретать велосипед... ?
Название: Ссылка на дескриптор объекта
Отправлено: skooby от 18 Декабря 2007, 13:38:28
Спасибо, наверно SQLayer.pm то что надо ) А то чуть не изобрел что-то страшное и без колес ))