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?).
<?php ?>
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.