W Internecie pełno jest przykładów w których to pisze by obsługę bazy danych robić w singeltonie powiedzmy pliki db.php. Mam tylko jedno pytanie. Po co? Za każdym razem gdy includuje ten plik db.php (albo require itd - ja używam require_once) niejako dołączona zostaje nowa instancja singeltona... Sprawdzałem to bo zrobiłem echo przy pobieraniu instancji obiektu gdy ten musi zostać stworzony, bo nie jest. I to "echo" widzę za każdym razem. Czyli to i tak powiela się w pamięci! Nie wiem czy robię coś nie tak? Czy tak ma być? Kopiowałem przykłady z wielu źródłem i za każdym razem tworzona jest nowa instancja! Statyczne pole jest puste. W takim razie po co? Jak najlepiej zaimplementować obiektowo obsługę bazy danych?
Tworzyć nowy obiekt. Wykonywać połączenie, później zapytanie i usuwać obiekt w każdym odwołaniu do bazy? Tylko to rozwiązanie wydaje mi się rozsądne (by nie zaśmiecać pamięci). Czy się może mylę?
Załączam obecny kod singeltona (bez dodatkowych funkcji)
class DataBase {
private static $oInstance = false;
public static function getInstance()
{
if (self::$oInstance == false)
{
echo "Tworze obiekt";//Sprawdzenie
self::$oInstance = new DataBase();
}
return self::$oInstance;
}
}