![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 800 Pomógł: 0 Dołączył: 26.11.2005 Skąd: Nowy Sącz Ostrzeżenie: (0%) ![]() ![]() |
Otóż ostatnio mam problem. Postanowiłem, że podczas uruchamiania aplikacji do dyspozytora jest przekazywana path do modelów i kontrolerów. Otóż mam mały problem. Doskonale wie każdy do czego to służy. Jednak problem tkwi co ten model musi zawierać jakie funkcje? Jak też przekazywać obiekt dostępu do bazy danych w aplikacji
![]() EDIT/// Zrobiłem rejestr systemowy frameworka. Zawierać będzie ten głupi DB object ![]() Ten post edytował Turgon 8.09.2006, 18:05:17 -------------------- Jah Music Is On My Mind !
|
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 338 Pomógł: 2 Dołączył: 4.03.2006 Skąd: Łódź Ostrzeżenie: (0%) ![]() ![]() |
Wiele osob pyta o model.
Model nie musi zawierac zadnych ustalonych metod! Jest to bardzo wazne. Model nie jest czyms standardowym, tak jak kontroler, a tym bardzi jak widok. Widok wiemy do czego sluzy - wyswietla nam dane. Nie pobiera ich z bazy, nie wysyla nam maili. On tylko wyswietla (z czym wiaze sie kilka metod). Model natomiast moze byc naprawde rozny. Moze pobierac/zapisywac dane z bazy, plikow XML, albo z innego serwera. Co da Ci nakazanie kaZdemu modelowi metody run, execute albo cos innego? nic! Np model nowos moze miec metody: show, save, getTitle itp. I oczywiscie, zeby wygodnie sie programowala to model moze dziedziczyc z jakiesgos bazowego, ktoru ma juz ustalone np polaczenie z baza danych. Adrian. |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 800 Pomógł: 0 Dołączył: 26.11.2005 Skąd: Nowy Sącz Ostrzeżenie: (0%) ![]() ![]() |
No właśnie teraz na to wpadłem
![]() -------------------- Jah Music Is On My Mind !
|
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 651 Pomógł: 28 Dołączył: 4.12.2004 Ostrzeżenie: (0%) ![]() ![]() |
W jednym temacie na tym forum pisałem, że chcę narzucić wszystkim klasom, które pełnią rolę modelu jednakowe metody za pośrednictwem interfejsu i się na tym nieźle przejechałem
![]() -------------------- Sygnatura niezgodna z regulaminem.
|
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 338 Pomógł: 2 Dołączył: 4.03.2006 Skąd: Łódź Ostrzeżenie: (0%) ![]() ![]() |
@Speedy dobrze prawisz. Ja bym tylko nie dawal tych interfejsow. To znaczy nie widze zadnego sensu. Ale pomysl np. z metoda getDB() ktora zwraca nam obiekt bazy jest nak najbradziej wygodny
![]() Adrian. |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 132 Pomógł: 0 Dołączył: 24.09.2003 Skąd: Giżycko / Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Ja, zamiast getDB(), preferuję w konstruktorze klasy, po której dziedziczą wszystkie klasy modelu, zapamiętać referencję do klasy obsługującej szablony albo kontrolera. Przykładowo:
Dzięki temu nigdzie wewnątrz klasy modelu nie muszę wywoływać ::GetInstance(), gdyż mam to rozwiązane dużo wygodniej. -------------------- |
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 338 Pomógł: 2 Dołączył: 4.03.2006 Skąd: Łódź Ostrzeżenie: (0%) ![]() ![]() |
Szablon w modelu?
![]() Poza tym... majac na mysli getDB() mialem na mysli metode modelu. Czyli to samo co proponujesz Ty. Kod:
|
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 132 Pomógł: 0 Dołączył: 24.09.2003 Skąd: Giżycko / Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Fakt, zbytnio pospieszyłem się z tym modelem i szablonami. Oczywiście chodziło mi o klasę, po której dziedziczą wszystkie klasy akcji, a nie modelu. Przykład: repozytrium mojego projektu Aedo - wszelkie akcje umieszczone w /core/modules/ dziedziczą po klasie /core/lib/class.Actions.php, dzięki czemu po otrzymaniu danych z modelu nie muszą wywoływać żadnych wzorców typu singleton. Bardzo przyjemne i przejrzyste rozwiązanie, polecam.
-------------------- |
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 800 Pomógł: 0 Dołączył: 26.11.2005 Skąd: Nowy Sącz Ostrzeżenie: (0%) ![]() ![]() |
Dobrze ja jednak zamiast getDB wolę
![]() $this->db = registry('db'); I voilla.... -------------------- Jah Music Is On My Mind !
|
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 18.06.2024 - 21:52 |