Witam!
Może mi ktoś wytłumaczyć jak działa warstwa abstrakcji? Nie jest problemem zrobić klasę DB, a w niej metody typu select, update, delete itd... Problemem nie są również transakcje. Problemem jest dla mnie jak przekazywać skomplikowane zapytania (kilka JOIN)questionmark.gif Nie wiem też czy dobrze rozumiem idee smile.gif Jako plusy widzę możliwość logowania zapytań wraz z ich czasem wykonania i ewentualne cachowanie zapytań. Ważna jest również możliwość zmiany silnika bazy. No i to jest problem smile.gif Bo jeśli (w najgorszym razie) do klasy DB dodam metode QUERY i przekazaną do metody zmienną podstawię jako argument pg_query (np) to już odpada zmiana silnika sad.gif Jaki jest sens czegoś takiego:
  1. <?php
  2. $result = $objDB->select("SELECT id FROM \"sesja_uzytkownika\" 
  3. WHERE identyfikator_sesji_ascii = '" . $this->php_session_id . "' 
  4. AND ((now() - utworzono) < ' " . $this->session_lifespan . " seconds') 
  5. AND user_agent='" . $strUserAgent . "' 
  6. AND ((now() - ostatnie_dzialanie) <= '".$this->session_timeout." seconds' 
  7.  OR ostatnie_dzialanie IS NULL)"
  8. );
  9. ?>

Równie dobrze mogę pisać SQL prosto w kodzie sad.gif Wydaje mi się, że dodatkowa warstwa abstrakcji dla każdej tabeli załatwi sprawę, ale też nie do końca to rozumiem smile.gif Niby, że mam wszystkie potrzebne zapytania zamknąć w metodach klasy do tej tabeli? Trochę bez sensu IHMO...

Temat był pewnie omawiany wielokrotnie, jednak nie znalazłem żadnego sensownego omówienia tematu. Patrzyłem na gotowe warstwy abstrakcji (PDO), ale tam też używa się zwykłego SQL'a... o co tu chodzi? Chciałbym unikać SQL i mieć go tylko w jednym miejscu - w warstwie abstrakcji! smile.gif Czy to aż tak wiele. Będę wdzięczny jeżeli ktoś mi to łopatologicznie wyjaśni! smile.gif

Czy przekazywanie do metody SELECT tablicy z kolumnami do pobrania plus zmienna zawierająca warunek ma sens? Czy taka funkcja może zwracać tablicę z tablicą wyników, liczbą wyników itp? Czy to jest wydajne? Co ze złożonymi zapytaniami? Czy bez osobnych klas dla każdej tabeli się nie obejdzie? BTW widzę tam masę metod sad.gif

DO ADMINA: Pytanie zadałem w dziale PROGRAMOWANIE OBIEKTOWE (wydaje mi się odpowiedniejsze) sorry za zamieszanie, moża usunąć ten wątek. Jeszcze raz przepraszam!