MVC - jak łączyć i jak utrzymać połączenie.

0

Witam,

Tworzę aplikację w PHP w modelu MVC i napotkałem na problemy:

  1. Wiem, że połączenie powinno znajdować się w osobnej klasie - nie w modelu. A co z operacjami na bazie danych? Tzn. mam funkcje typu select, insert itd. Czy je mogę wstawić do modelu? W końcu pobierają dane, a do tego służy model.
  2. W jaki sposób odwołać się do utworzonego połączenia? Czytałem, że można zastosować zmienną globalną, ale wadą jest powtarzanie się kodu. Czytałem też, że można zastosować Singleton, ale również nie jest to do końca poprawne rozwiązanie. Jakie jest najlepsze rozwiązanie tego problemu?

Pozdrawiam,
brando.

0
brando napisał(a):
  1. Wiem, że połączenie powinno znajdować się w osobnej klasie - nie w modelu. A co z operacjami na bazie danych? Tzn. mam funkcje typu select, insert itd. Czy je mogę wstawić do modelu? W końcu pobierają dane, a do tego służy model.

Moim zdaniem najlepszym pomysłem jest stworzenie superklasy "Model" (z której będą dziedziczyć wszystkie modele), implementującej wszystkie potrzebne metody. Przy odrobinie sprytu można pobieranie danych zautomatyzować, jeśli np. będziesz trzymał schemat bazy w jakiejś tablicy - zobacz, jak to rozwiązano w CakePHP.

brando napisał(a):
  1. W jaki sposób odwołać się do utworzonego połączenia? Czytałem, że można zastosować zmienną globalną, ale wadą jest powtarzanie się kodu. Czytałem też, że można zastosować Singleton, ale również nie jest to do końca poprawne rozwiązanie. Jakie jest najlepsze rozwiązanie tego problemu?

Zmienna globalna nie jest dobrym pomysłem, ale nie wiem dlaczego Singleton miałby nie zdać egzaminu?

0

Możesz utworzyć klasę, która będzie posiadała funkcję statyczną odpowiedzialną za zwrócenie połączenia do DB i na tym połączeniu działać w modelach.

0
art3c napisał(a):

Moim zdaniem najlepszym pomysłem jest stworzenie superklasy "Model" (z której będą dziedziczyć wszystkie modele), implementującej wszystkie potrzebne metody. Przy odrobinie sprytu można pobieranie danych zautomatyzować, jeśli np. będziesz trzymał schemat bazy w jakiejś tablicy - zobacz, jak to rozwiązano w CakePHP.

Można też nawiązywać połączenie w konstruktorze superklasy model, wtedy za każdym razem kiedy korzystamy z modelu mamy nawiązane połączenie z bazą.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.