![]() |
![]() ![]() |
![]() |
![]()
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 (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif)
EDIT/// Zrobiłem rejestr systemowy frameworka. Zawierać będzie ten głupi DB object (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif) .... Ten post edytował Turgon 8.09.2006, 18:05:17 |
|
|
![]()
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 (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) . Po prostu wrzucę to przy pomocy rejestru i konstruktor te podstawowe narędzia dla modelu...
|
|
|
![]()
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 (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) . Na dłuższą metę staje się to bardzo niewygodne. Lepiej jest stworzyć więcej interfejsów oddzielnych dla poszczególnych modeli i mieć spokój. Jak Prph wspomniał, nie ma sensu tworzyć uniwersalnego modelu. Można conajwyżej stworzyć klasę zawierającą jakieś metody, z których korzystają wszystkie modele i te modele będą z niej dziedziczyć.
|
|
|
![]()
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 (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
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? (IMG:http://forum.php.pl/style_emoticons/default/blinksmiley.gif)
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ę (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) . W konstruktorze.
$this->db = registry('db'); I voilla.... |
|
|
![]() ![]() |
![]() |
Aktualny czas: 23.08.2025 - 14:23 |