![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 359 Pomógł: 1 Dołączył: 16.04.2006 Skąd: Łódź Ostrzeżenie: (0%) ![]() ![]() |
Witam, piszę sobie frameworka. Na razie jest dosyć 'mały' i niedopracowany. Wszystko oparte jest na MVC. No ale dobra do rzeczy. Przemyślałem kilka spraw i wymyśliłem kilka ciekawych rzeczy, a mianowicie:
1) Forwardowanie akcji. Forwardowanie akcji, jest bardzo przydatną rzeczą w każdym frameworku, ale nie spotkałem się jeszcze z forwardowaniem na kilka akcji 'z góry', a myśle że to jest dośc przydatne, bo możemy poprzez jedną akcje zaplanować co i jak sie stanie. Wiadomo, że jeśli mamy akcje 'dodajNewsa' to rzeby zrobić 'dodajNewsaiPokaz' musimy tworzyć nową akcję, tak samo 'dodajiWyloguj' , a co bedzie jak zrobimy 'dodajWylogujPrzejdznaStroneGlowna' ? to jest tworzenie akcji, które już mamy(np. wyloguj) i dodawanie do nich jednej linijki (stare proceduralne kopiowanie kodu?). A jak mamy forwarodwanie na kilka akcji z 'góry' to jest super bo tworzymy sobie tylko 'Dodaj' 'Wyswietl' 'Wyloguj' 'PrzejdzNaStroneGlowna'. (Może przykład wyłuskany, ale nie umiem na szbyko wymyśleć innego). Ja rozwiązałem to sobie w taki sposób, że mam klase 'ActionCollectioner', która implementuje sobie Iterator :
w Routerze umieściłem sobie pętlę foreach(), do której podaje mój ActionCollectioner:
Dispatcher odpala kontroller akcji, a w nim możemy skorzystać z metody rodzica pushNextAction, która odwołuje sie do FrontController'a (który jedyny we frameworku jest singletonem) trzymającego dostęp do ActionCollectioner:
oczywiście pokusiło mnie żeby sprawdzić, co się dzieje jeśli przekieruje akcje z widowkiem, na akcje z widokiem - i co wyświetla sie tylko pierwsza akcja z widowkiem - czemu - zastosowanie funkcji require_once() w systemie, który przetwarza widok (pokazuje tylko raz, a że mam Template i i subTemplate - czyli główny szablon www i 'srodkowa tresc' zasysa raz Main.php i już dalej nie). Dodam, że korzystam z szablonów php. Jedyne co pozostaje to stworzyć MAX_FORWARDS, aby akcje bez widoku sie nie zapętlały. 2) Kolejna sprawa - Model. Zauważyłem, że w niektórych frameworkach Baze danych rejestruje się we FrontControllerze... Pyanie po co, to chyba gryzie się z ideologią MVC (może jest wygodne dla programisty, który tworzy aplikacje na tym frameworku, ale mało elastyczne). Ja postanowiłem problem rozwiązać w inny sposób, a mianowicie: mam rodzica dla każdego modelu:
dodam iż funkcja setDataSource wygląda takowo iż używam magicznego __autoload() więc nie trzeba podawać ścieżki do DataSource, aby działało - wystarczy umieścić go w katalogu core, który na początku jest skanowany (proszę mi nie mówić, że spowalnia to aplikacje, bo czas wykonania różni sie o okolo 0.005 s, a jest bardzo wygodne) No dobra, ale do rzeczy teraz mam model :
i myśle, że to jest rozwiązanie optymalne, bo jak zeche korzystać z pliku, a nie z bazy to robie:
No tak więc to by było na tyle, proszę o komentarze do moich pomysłów i z góry dziękuję za pomoc. Pozdrawiam... Kamil |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 352 Pomógł: 0 Dołączył: 22.01.2006 Ostrzeżenie: (0%) ![]() ![]() |
Za poprzednikami.. zapytania do bazy danych powinieneś przynajmniej wydzielić do osobnej klasy.
Poza tym tak jakoś niechlujnie to opisałeś masa błędów stylistycznych, literówek, anglojęzycznych wstawek (kiedy istnieją polskie odpowiedniki).. nie wiem może dla wielu jest to trendi dżezi.. ale na pewno to ogranicza czytelność i trudniej jest się połapać w tym co chcesz przekazać.. wszystko zależy od tego jaki był cel tej publikacji. Jedna drobna rzecz.. jaki ma cel taki kod: Kod public function pushAct(DispatcherToken $oDispatcherToken) { if(!($oDispatcherToken instanceof DispatcherToken)) { throw new ActionCollectionerException('Parameter You given to pushObj must be instance of DispatcherToken.'); } array_push($this->_aActions, $oDispatcherToken); } Przecież jeśli $oDispatcherToken nie będzie instancją DispatcherToken php na wstępie wywali Ci fatalny błąd. W żadnym wypadku wyjątek nie zostanie wyrzucony. |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 359 Pomógł: 1 Dołączył: 16.04.2006 Skąd: Łódź Ostrzeżenie: (0%) ![]() ![]() |
Za poprzednikami.. zapytania do bazy danych powinieneś przynajmniej wydzielić do osobnej klasy. Poza tym tak jakoś niechlujnie to opisałeś masa błędów stylistycznych, literówek, anglojęzycznych wstawek (kiedy istnieją polskie odpowiedniki).. nie wiem może dla wielu jest to trendi dżezi.. ale na pewno to ogranicza czytelność i trudniej jest się połapać w tym co chcesz przekazać.. wszystko zależy od tego jaki był cel tej publikacji. Jedna drobna rzecz.. jaki ma cel taki kod... ok ten fragment kodu jest zbędny. A co do opisu - pisane na szybko - to nie miał być artykuł. Pozdrawiam. Kamil |
|
|
![]() ![]() |
![]() |
Aktualny czas: 13.10.2025 - 01:39 |