![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 39 Pomógł: 4 Dołączył: 9.05.2012 Ostrzeżenie: (0%) ![]() ![]() |
Witam
Chciałbym stworzyć routing, do własnej implementacji MVC. Na początku przedstawię strukturę katalogów mojego projektu. (IMG:http://img855.imageshack.us/img855/6812/struktura.gif) W folderze app, będą pliki danego projektu. Każdy contoller będzie miał swój plik .yml w którym będą zapisane zasady routingu. przykładowy plik index.yml prefiks oznacza wpisany adres url, contoller i action wiadomo.
i tak działa mój routing: 1. ktoś wpisuje adres na mojej stronie np. index/show/40 2. sprawdzane jest czy istnieje dany controller o nazwie index, akcja show i parametr 40 3. jesli tak to uruchamiany jest odpowiednia akcja z contollera Routing.php
Bootstrap.php
Chciałbym aby mój kod był uniwersalny i był elastyczny dla wielu różnych projektów. Chciałbym też aby został napisany o dobre praktyki OOP. Głównie to właśnie zależy mi na wysokiej jakości kodu. Co myślicie o takim rozwiązaniu tego zagadnienia? Wszystko działa w tym routingu. Jednak bardzo mi zależy aby pisać przemyślany kod. Gdzie popełniłem jakiś błąd projektując ten routing ? |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 045 Pomógł: 141 Dołączył: 19.09.2006 Skąd: B-tów Ostrzeżenie: (0%) ![]() ![]() |
wiem że pewnie teraz zostanę zbesztany ale co tam (IMG:style_emoticons/default/tongue.gif)
W większości przypadków nie widzę potrzeby używania modelu(no może poza tym że wzorzec tak nakazuje) ponieważ w znacznej większości metody modelu to po prostu SELECT * FROM tabela i zapisanie tego do tablicy. W ten sposób powstaje cała masa metod z których w wiekowości korzystam tylko raz, oczywiście można by je odpowiednio parametryzować ale w końcu dojdzie do takiej sytuacji że prawie całe zapytanie będę zapisywał w parametrach funkcji. Ja wolę napisać dokładnie takie zapylanie jakiego potrzebuję bezpośrednio w kontrolerze i nie muszę się przejmować jak chcę dodać kolejnego jojn'a że coś innego przestanie działać prawidłowo czy tak wydajnie jak by mogło. Poza tym dla mnie taki zapis w brew pozorom jest bardziej czytelny. Znając życie pojawi się argument że modele łatwiej poddaje się testom. On ok ale co można testować jeśli w metodzie modelu mamy tylko zapytanie do SQL i nic więcej ? Oczywiście stosuję modele ale tylko wtedy gdy wiem że kod w dokładnie takiej postaci będę potrzebował w kilku akcjach i nie jest pojedyncze zapytanie ale coś co wymaga dodatkowej obróbki po stronie php. Moim zdaniem to właśnie powinien robić model - obrabiać złożone dane, a nie robić każdego select'a do bazy Inną rzeczą którą często robię(a co zapewne wiele osób uzna za bardzo błędne) jest przekazywanie uchwytu do wyniku zapytania do widoku - oczywiście zakładając że wynik zapytania ma być tylko wyświetlony, a nie poddawany dalszej obróbce. Czyli np. $vies->dane=$this->db->query('SELECT ....'); i dopiero w widoku robię pętlę while do listowania wyniku. Dlaczego tak ? Dla mnie odpowiedź jest prosta, jeśli chciałbym zrobić pętlę while w modelu czy w kontrolerze musiałbym zapisać te wszystkie dane do tablicy, tablicę przekazać do widoku i na koniec w widoku stworzyć drugą pętlę która te dane wyświetli. Czyli muszę zadeklarować dodatkową tablicę i użyć dwóch pętli, a przy moim rozwiązaniu używam tylko jednej pętli |
|
|
![]() ![]() |
![]() |
Aktualny czas: 16.10.2025 - 18:21 |