Przed chwilką jeszcze analizowałem pewne rzeczy i natrafiłem na pewien dylemat. Już wyjaśniam o co chodzi.
Cały framework opiera się na pliku konfigurcyjnym (normalne). W konfigu mam dwie sekcje [Database] i [Sessions]. W sekcji database ustawiam parametry połączenia z bazą podobnie jak w sekcji Session. Dlaczego? Bo chcę mieć możliwość przechowywania sesji w innej bazie niż docelowa.. Taki bajer:)
Sesję tworzę w ten sposób:
<?php $oSession = new CubeSession(); ?>
Konstruktor sprawdza czy są ustawione wymagane dane do połączenia z bazą i wywołuje metodę connect(), która otwiera połączenie z bazą danych.
Natomiast z bazą łącze się w następujący sposób:
<?php ?>
Konstruktor sprawdza czy wszystkie wymagane parametry są ustawione i wywołuje metodę connect(), która nawiązuje połączenie z bazą.
Sedno sprawy:
W aplikacji uruchamiam sesję i tworzę instancję klasy Mysql, żeby pobierać jakieś dane z bazy. Problemem jest to, że mam dwa otwrte połączenia przypadające na jeden skrypt... :/
Zacząłem się zastanawiać czy nie lepiej tworzyć z jednego ogólnego połączenia. Czyli najpierw tworzę instancję klasy Mysql i przekazuję obiekt do instancji klasy sesji. Np.
<?php $oSession = new CubeSession($oDatabase); ?>
i obiekt $oSession korzysta z poączenia przekazanego w obiekcie $oDatabase..
Nie wiem czy dobrze rozumuję, czy to jest zgodne z OOP?
Nawet jeśli tak to pojawia się inny problem. Muszę sprawdzać czy parametry do połączenia z bazą (w sekcji Database) są identyczne jak parametry do połączenia z bazą dla sesji (w sekcji Session). Jeśli nie to każdy obiekt korzysta ze swojego połączenia..
Nie wiem czy jest sens tak się z tym pieprzyć czy nie lepiej po prostu korzystać w jednym skrypcie z dwóch (nawet takich samych) połączeń z bazą..
Co o tym sądzicie?