Автор Тема: Ссылка на дескриптор объекта  (Прочитано 2836 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн skooby

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 6
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Ссылка на дескриптор объекта
« : 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);


Я раньше не писал что-то серьозное и обходился простыми скриптами, а тут такое дело решил ООП использовать, так что возможно очень уродливо получилось, не судите строго  :(
Вообще хотелось бы узнать как это у других реализовано...
« Последнее редактирование: 18 Декабря 2007, 09:41:37 от skooby »

Оффлайн commander

  • Developer
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1298
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.webtips.ru
Ссылка на дескриптор объекта
« Ответ #1 : 18 Декабря 2007, 11:21:09 »
skooby
1. какой смысл делать new и не делать connect?
ИМХО:
connector  -> _connector т.е. приватный метод... и вызывать его из констуктора...

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

3. похожая структура организованна тут:
http://search.cpan.org/~stellar/SQLayer-1.1/SQLayer.pm
может лучше использовать уже что-то готовое... а не изобретать велосипед... ?
And no religion too...

Оффлайн skooby

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 6
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Ссылка на дескриптор объекта
« Ответ #2 : 18 Декабря 2007, 13:38:28 »
Спасибо, наверно SQLayer.pm то что надо ) А то чуть не изобрел что-то страшное и без колес ))

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28