Доброго времени суток. Начну с того, что решил я написать "движок" сайта. Спроектировал все как надо. Функции работы с шаблонам засунул в отдельный модуль, общие функции в другой модуль. Начал писать функции работы с базой столкнулся с такой проблемой. приведу пример:
--- 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);
Я раньше не писал что-то серьозное и обходился простыми скриптами, а тут такое дело решил ООП использовать, так что возможно очень уродливо получилось, не судите строго
Вообще хотелось бы узнать как это у других реализовано...