Клубове Дир.бг
powered by diri.bg
търси в Клубове diri.bg Разширено търсене

Вход
Име
Парола

Клубове
Dir.bg
Взаимопомощ
Горещи теми
Компютри и Интернет
Контакти
Култура и изкуство
Мнения
Наука
Политика, Свят
Спорт
Техника
Градове
Религия и мистика
Фен клубове
Хоби, Развлечения
Общества
Я, архивите са живи
Клубове Дирене Регистрация Кой е тук Въпроси Списък Купувам / Продавам 02:20 15.04.21 
Клубове/ Компютри и Интернет / Perl Всички теми Следваща тема Пълен преглед*
Информация за клуба
Тема Re: DESTROY i DBI.pm [re: edno momiche]
Автор Bruta ()
Публикувано17.09.02 13:27  



Taka...
znachi v paketa imam nqkolko globalni za nego promenlivi. $population - tq broi kolko obekta imam syzdadeni. @objects - vseki element na masiva e referenciq kym nqkoi moi obekt po reda na syzdavaneto im.
Opciite s koito se svyrzvam kym bazara danni (MySQL) sa:

my $opt = { 'AutoCommit' => 1,
'PrintError' => 1,
'RaiseError' => 0 };

Ne izpolzvam tranzakcii.

Eto go i konstruktora:

sub new
{
my($pkg, $db, $user, $pass) = @_;
my($object);

if(!@objects) #ako nqma definirani drugi obekti
{
@_ == 4 or die 'Usage: db->new(database, user, password);';
my $dsn = 'dbi:mysql:'.$db.';mysql_socket=/tmp/mysql/mysql.sock';
($dbh = DBI->connect($dsn, $user, $pass, $opt)) or die $DBI::errstr;

$object->{dbh} = $dbh;
$object->{user} = $user;
$object->{pass} = $pass;
$object->{db} = $db;
$object->{id} = 0;

$population = 1; #inicializirame broqcha na obektite

push @objects, $object; #pyrviqt element na masiva sochi kym pyrviq obekt
}
else
{
$object->{dbh} = $dbh; #vzema syshtata referenciq kato pyrviq obekt
$object->{user} = $objects[0]->{user}; #i usera e syshtiq
$object->{pass} = $objects[0]->{pass};
$object->{db} = ($db or $objects[0]->{db}); #ako e podadena baza danni

push @objects, $object; #vzemame referenciqta kym obekta, i pri drugite

$object->{id} = $#objects; #id-to na tozi obekt e posledniq element na masiva
$population++; #incrementirame broq na obektite
}

return bless $object, $pkg;
}

nadqvam se che koda se razbira. shte dam malko dopylnitelni svedeniq za atributite.

$object{dbh} - stoinosta na tova e ravna na tazi na $dbh. crez nego izpylnqvam do(), fetch(), ...
{user} - usera s koito sym se svyrzal s bazata
{pass} - parolata
{db} - bazata danni v koqto shte raboti obekta
{id} - s tova znam tozi obekt koi pored mi e, i taka znam kyde v @objects se namira toi

samo pri syzdavaneto na pyrviq obekt iziskvam user i pass. Pri sledvashtite ne sa mi nujni tyi kato izpolzvam syshtata konekciq. Za vseki obekt moje da se zadade v koq baza danni da operira, predpolagam che usera ima prava za tova. Ako ne e zadadena, izpolzvam tazi na pyrviq obekt.

sega eto q i DESTROY:

sub DESTROY
{
# print "\nDESTROY\n";
my($self) = $_[0];

$population--; #dekrementiram broq na obektite
$objects[$self->{id}] = undef; #referenciq kym tozi obekt ne mi e nujna veche

# print "POPULATION: $population\n";
$dbh->disconnect() and print "\n\nDISCONNECT\n\n" if $population == 0; #i ako tova e posledniq mi obekt, disconnect
}

reshih da izpolzvam metoda s broene na obektite, poneje go vidqh v edna kniga...:-)

Tova koeto iskam e da znam che vryzkata mi s bazata danni shte se prekysne kogato veche nqmam aktivni moi obekti, a po kakyv nachin tochno shte e...

10x.

P.S. izvinqvam se za podredbata na koda, obache se premahvat intervalite...



Цялата тема
ТемаАвторПубликувано
* DESTROY i DBI.pm Bruta   15.09.02 22:00
. * Re: DESTROY i DBI.pm edno momiche   16.09.02 03:17
. * Re: DESTROY i DBI.pm Bruta   16.09.02 12:06
. * Re: DESTROY i DBI.pm Bruta   16.09.02 12:18
. * Re: DESTROY i DBI.pm Bruta   16.09.02 12:49
. * Re: DESTROY i DBI.pm edno momiche   17.09.02 06:36
. * Re: DESTROY i DBI.pm edno momiche   17.09.02 06:49
. * Re: DESTROY i DBI.pm Bruta   17.09.02 13:27
. * Re: DESTROY i DBI.pm edno momiche   17.09.02 15:24
. * Re: DESTROY i DBI.pm Bruta   17.09.02 16:35
. * Re: DESTROY i DBI.pm Pavel   19.09.02 18:35
. * Re: DESTROY i DBI.pm DEEM   19.09.02 19:27
Клуб :  


Clubs.dir.bg е форум за дискусии. Dir.bg не носи отговорност за съдържанието и достоверността на публикуваните в дискусиите материали.

Никаква част от съдържанието на тази страница не може да бъде репродуцирана, записвана или предавана под каквато и да е форма или по какъвто и да е повод без писменото съгласие на Dir.bg
За Забележки, коментари и предложения ползвайте формата за Обратна връзка | Мобилна версия | Потребителско споразумение
© 2006-2021 Dir.bg Всички права запазени.