Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> ActiveRecord bez metod statycznych, Pobieranie połączenia DB za pomocą metody statycznej innej klasy
adbacz
post
Post #1





Grupa: Zarejestrowani
Postów: 532
Pomógł: 24
Dołączył: 15.04.2011
Skąd: Kalisz

Ostrzeżenie: (0%)
-----


Jak stworzyć ActiveRecord bez udostępniania połączenia z bazą danych za pomocą statycznej metody innej klasy?

Przykład wykorzystania AR:
  1. $post = new Post;
  2. $post->title = 'przykładowy post';
  3. $post->content = 'zawartość postu';
  4. $post->save();

Aby wykonać taki kod, muszę w klasie Post zrobić dziedziczenie po klasie, np. ActiveRecord, i w tej klasie, a konkretnie w konstruktorze, pobrać połączenie z bazą danych, z jakiejś statycznej metody, która ją udostępnia. Czyli na przykład klasy APP i metody getDatabaseConnection():
  1. class APP
  2. {
  3. private static $db;
  4.  
  5. // static setter...
  6.  
  7. public static function getDatabaseConnection()
  8. {
  9. return self::$db;
  10. }
  11. }


Ale czy jest możliwość stworzenia obiektów ActiveRecord bez pobierania połączenia z DB za pomocą innej metody statycznej? Robi się tutaj bezpośrednie powiązanie, nie tylko metody, ale i nazwy klasy, a to totalnie nie współgra z zasadami SOLID.

A może zamiast tworzyć obiekt normalnie (new Post), robić to za pomocą innej metody, na przykład klasy ActiveRecordFactory, i w niej, po utworzeniu obiektu Post, wstrzyknąć obiekt bazy danych i zwrócić obiekt Post?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Crozin
post
Post #2





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


Cytat
Co masz na myśli pisząc "Postaw na jakość kodu"?
Mam na myśli to byś pisał m. in. stosując się do wspomnianego SOLID-a, wykorzystywał sprawdzone, dobrej jakości biblioteki (np. Doctrine), a pisany kod był w miarę elastyczny. Siłą rzeczy przy tego typu założeniach Twoja aplikacja nieco zwolni, a programista będzie miał większą ilość kodu do ogarnięcia/napisania - ale przynajmniej przy pierwszej lepszej, nietrywialnej rzeczy nie będzie to wszystko rzucać mu kłód pod nogi, a pomagać.
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 27.12.2025 - 21:46