Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Sterownik bazy danych + sesje
PrzemoN
post
Post #1





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 25.10.2005

Ostrzeżenie: (0%)
-----


Witam serdecznie wszystkich,

Moj problemik wyglada nastepujaco

Mam dwie klasy sql oraz session
Jak nietrudno sie domyslic pierwsza do obslugi SQL (dokladnie PgSQL) a druga do obsługi sesji.
I teraz pytanko klasa session dziedziczy z klasy sql (klas sql jest matka).

Destruktor klasy sql konczy poloczenie z baza danych
  1. <?php
  2.  
  3. public function __destruct() {
  4. if(is_resource($this -> link))
  5. {
  6. pg_close($this -> link);
  7. }
  8. }
  9.  
  10. ?>


Destruktor klasy session ma uaktualnic istniejaca sesje jesli zostana spelnione odpowiednie warunki.
  1. <?php
  2.  
  3. public function __destruct() {
  4. if($this->action == UPDATE) {
  5. globa $db;
  6. $sql = 'UPDATE sessions SET id = ''.$this->session_id.'', time='.time().' WHERE id=''.$this->session_id.
  7. ''';
  8. $db->query($sql); // metoda query jest z klasy sql ( obsluguje zapytania SQL-owe)
  9. }
  10. }
  11.  
  12. ?>


Problem jest w tym ze destroktor w klasie sql zamyka mi to poloczenie jako pierwszy. I wówczas destruktor w klasie sesii nie jest wstanie wykonac metody query(wchodzacej w sklad sql).
Poniewaz poloczenie z baz zostalo przerwane (zrobil to destruktor w klasie sql).

Pytanie: Jak zrobic zeby naiperw wykonal sie destruktor klasy sesion (dziedziczaca) a pozniej destruktor klasy sql (i czy tak wogle da sie zrobic).

PS: W chwili obecnej udalo mi si to obejsc w ten sposób ale szukam innego rozwiazania
  1. <?php
  2.  
  3. public function __destruct() {
  4. if($this->action == UPDATE) {
  5. $new = new sql(); // TUTAJ JESZCZE RAZ LACZE SIE Z BAZA
  6.  // tworzae nowe poloczenie z baza danych i tym sposobem to dziala
  7.  $sql = 'UPDATE sessions SET id = ''.$this->session_id.'', time='.time().' WHERE id=''.$this->session_id.
  8. ''';
  9. $new->query($sql); // metoda query jest z klasy sql ( obsluguje zapytania SQL-owe)
  10.  
  11. }
  12. }
  13.  
  14. ?>


Za wszelkie sugestie dzieki z gory (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) .


//edited by DeyV - Używj tagu php
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
PrzemoN
post
Post #2





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 25.10.2005

Ostrzeżenie: (0%)
-----


Cytat(chmolu @ 2005-10-25 18:33:01)
  1. <?php
  2.  
  3. public function __destruct() {
  4.  //instrukcje klasy session
  5.  
  6.  parent::__destruct();
  7. }
  8.  
  9. ?>


A tak w ogóle to po co klasa Session ma dziedziczyć z klasy SQL? Wprowadzasz tylko bałagan i głupie błędy.

Dzieki za tak szybka odpowiedz jednak aproponowane przez ciebie rozwiazanie niestety nie dziala.

Klasa sql w moim przypadku obsluguje wszystkie metody zwiazane z obsluga bazy danych.
A kolejne klasy ktore dokonuja jakichs operacji na danych w bazie korzystaja z tej klasy.
Dzieki temu wewnatrz klasy session nie musze pisac czegos w tym stylu
NP:
Kod
$result = pg_query($conn, "SELECT author, email FROM authors");

Tylko pisze
Kod
$db->query("SELECT author, email FROM authors");


Dodatkowo jesli che uruchomic mechanizm transakcji to wklepuje tylko kod w stylu
Kod
$db->query("jakies zapytanie",BEGIN_TRANSACTION);
//zrobilem cos na wzor z phpBB2


a caly mechanizm uruchamiajacy i zamykajacy proces transakcji umieszczeny jest w metodzie query w klasie sql.

Czy to jest nielogiczne?

Byc moze sie myle jezeli tak to wytlumacz mi czemu?
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 14.10.2025 - 06:08