Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Identyfikator do obiektu ... framework MVC
Forum PHP.pl > Forum > PHP
P@vloos
Pisząc framework oparty na wzorcu MVC natknąłem się na problem.

Przybliżę trochę strukturę tegoż frameworka.

Front kontroler uruchamia kontroler np. newsów i wywołuje z niego funkcję np. getNews($id). Ten natomiast tworzy newsModel wpisuje do niego dane pobrane za pomocą newsModelDao.

  1. <?php
  2. Front kontroler <--> news kontroler <--> newsModelDao (--> DB)
  3. <--> newsModel
  4. ?>


I tutaj mam problem - mianowicie obiekt newsModelDao potrzebuje identyfikator do obiektu sterującego bazą. Obiekt ten już istnieje, gdyż inicjowany jest na samym początku dokumentu i przechowuje w sobie identydikator połączenia. Gdyby każda klasa DAO inicjowała kolejny obiekt DB to nastąpiło by zupełnie niepotrzebne kilkukrotne połączenie z bazą. Takze obiekt DB nie powinien być dublowany. Niechciałbym również przekazywać identyfikatora do DB od front kontrolera do news kontrolera i stamtąd do newsModelDao, gdyż news kontroler nie potrzebuje tego identyfikatora sam dla siebie.

Jakie może być tego rozwiązanie? Klasa DB jako abstrakcyjna chyba nier spełniała by należycie zadania, ponieważ gdy obiekt nie jest zainicjowany to nie przechowuje id połączenia z bazą.

hmm mam nadzieję że uda wam się zrozumieć co napisałem.
marast78
poczytaj o singleton czyli stałej instancji lub użyj handlera
Turgon
Regedit = prosty rejestr przechowywujący instancję obiektu DB.
NuLL
Singleton jest lepszy - dobre edytory potrafia wykorzystac tagi phpDoc co w przypadku rejestru jest niemozliwe.
Kodie
Singleton to dobre wyjście jeśli musisz utrzymywać tylko jedno połączenie z bazą. A co jeśli skrypt musi utrzymywać połączenie z kilkoma bazami? Może daj w jakiś sposób możliwość konfiguracji Modelu DAO? Tak, żebyś mógł przekazywać id połączenia z konfiguracji.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.