![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 119 Pomógł: 0 Dołączył: 15.07.2003 Skąd: Grajewo Ostrzeżenie: (0%) ![]() ![]() |
Witam!
Kilka miesięcy temu wraz ze znajomymi tworzyłem prostą aplikację internetową na potrzeby zaliczenia na Erasmusie. Bawiłem się wcześniej PHP, więc postanowiłem wszystko napisać obiektowo. Jednak z wrodzonego lenistwa, braków wiedzy i pośpiechu uprościłem to w wielu miejscach, co okazało się uciążliwe przy rozbudowaniu kodu później. Postanowiłem napisać ją od początku, ale wcześniej lepiej to zaplanować, z waszą pomocą jeśli to możliwe. Aplikacja ma na celu kojarzenie kolekcjonerów i umożliwiać organizację spotkań (adresy, mapy dojazdu, komentarze). Poprzednia wersja była napisana (przynajmniej tak mi się wydaję) na modelu MVC: - prosty adres http://localhost/collector/event/1234/ wędrował do index.php, - który na podstawie pierwszej zmiennej "event" ładował odpowiedni plik: event.php - na podstawie pozostałych zmiennych z adresu i POST decydował co zrobić, - do przygotowania danych używał klas Event, Item, User ... które były niestety tylko kontenerami dla funkcji, które zwracały 2-wymiarowe tablice z rekordami z bazy danych. - te po małych zmianach wędrowały do Smarty i do przeglądarki użytkownika. więc jest prawie MVC (model - klasa bazy danych, widok - smarty, tylko kontrolery są prawie całkowicie strukturalne) Jednak nie jestem zadowolony, z tego, że wszystko opierało się na tablicach 2-wymiarowych, po pewnym czasie wszystko kończyło się na pobraniu danych z bazy, dodaniu adresów url i wysłaniu do przeglądarki, bo wszystkie inne modyfikacje zabrały by za dużo czasu, co zabiło kreatywność. I tu prośba do was, pomożecie mi zaplanować nową hierarchię klas. Można by każdy rekord opakować w obiekt klasy (Event, Item, User), które dziedziczyły bo klasie bazowej metody do tworzenia urli itd. Co jednak z wynikiem zapytań krzyżowych? Wtedy obiekt Item, zawierał by np. nazwę Eventu do którego jest przyporządkowany. Do tego wszystkie ścieżki do arkuszy styli i skryptów JS były dodawane, do dwuwymiarowej tablicy $meta z tytułem strony i słowami kluczowymi i potem w jednym kawałku wysyłane do Smarty. To też można by zobietować (poprawnie zapisałem?).
O czym jeszcze, radzicie mi pomyśleć, zanim usiądę do pisania? Chciałbym, żeby kod był maksymalnie elastyczny, ale żeby nie zapędzić się w kozi róg jak ostatnim razem, kiedy klepało się kod aby działał. Z góry dziękuję za pomoc. Ten post edytował onlyX 3.07.2009, 13:03:01 |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 175 Pomógł: 12 Dołączył: 28.06.2007 Skąd: Bytom Ostrzeżenie: (0%) ![]() ![]() |
wg mnie nie ma co wymyślać koła na nowo. Twój silnik, który teraz napiszesz i tak nie będzie lepiej zaplanowany niż gotowe na rynku frameworki - zainteresuj się którymś z nich. Na topie teraz jest Symfony i ZendFramework. Użyjesz gotowego frameworka, to powinno się wszystko wyprostować. Pisząc coś samemu od początku, możesz znów czegoś nie przewidzieć, a co wyjdzie w późniejszym czasie. Używając gotowych rozwiązań, masz pewność że kod jest sprawdzony i przemyślany przez wielu programistów.
Ten post edytował plurr 7.07.2009, 10:11:00 |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 119 Pomógł: 0 Dołączył: 15.07.2003 Skąd: Grajewo Ostrzeżenie: (0%) ![]() ![]() |
Tak też zrobiłem czekając na odpowiedź.
Pytałem też o wskazówki nt. programowanie, co jest lepsze do reprezentacji rekordów z bazy danych, tablice czy obiekty? Jak sobie z tym radzicie? |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 589 Pomógł: 91 Dołączył: 22.05.2008 Skąd: Gliwice Ostrzeżenie: (0%) ![]() ![]() |
co jest lepsze do reprezentacji rekordów z bazy danych, tablice czy obiekty? To zależy, jeśli struktura bazy nie jest skomplikowana jestem za tablicami, jeśli jest dość powiązana - obiekty. Zerknij okiem w mojego bloga: Obiektowe odwzoraowanie struktury bazy danych Ten post edytował #luq 7.07.2009, 11:04:31 |
|
|
![]()
Post
#5
|
|
Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów ![]() |
Tablice w 90% przypadków będą szybsze od obiektów.
Osobiście staram się używać tablic i nie wprowadzać obiektów na siłę... Jest ArrayObject, Iterator, można funkcje z rdzenia wykorzystywać dzięki temu... |
|
|
![]() ![]() |
![]() |
Aktualny czas: 23.08.2025 - 15:58 |