Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: OOP - aplikacja jeszcze bardziej obiektowa
Forum PHP.pl > Forum > PHP > Object-oriented programming
onlyX
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?).
  1. <?php
  2. $meta['css'][] = $url->makeURL(array($config['css.path'], 'style.css'));
  3. $meta['js'][] = $url->makeURL(array($config['js.path'], 'jquery.js'));
  4. ?>



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.
plurr
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.
onlyX
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?
#luq
Cytat(onlyX @ 7.07.2009, 11:51:53 ) *
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
erix
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...
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.