Witam,
mój pomysł przepisania skryptu zintegrowanego z phpBB3 na MVC niestety upadł z powodu nierozwiązanych wielu kwestii, ale jednak dzięki temu udało się sporo wyciągnąć i na serio dostrzec zalety zamykania poszczególnych rzeczy w obiektach.
Mam newsy i artykuły, które można komentować. Jeżeli w danym newsie opcja allowComments jest równa 1, to tworzę obiekt komentarzy i wywołuję metodę, która je wyświetla (wewnątrz wywołuje ona prywatne metody sprawdzające, czy czasem nie wysłano komentarza, jeżeli tak to jest również odpowiednia walidacja).
Pojawia się jednak problem, gdy zachodzi potrzeba wydzielenia wyglądu tych komentarzy. Mam w skrypcie klasę template z głównymi funkcjami potrzebnymi wszędzie, którą dziedziczą klasy takie jak np. tplNews czy tplArticle, zawierające metody odpowiednie za np. wyświetlanie 1 newsa, czy przekazanej w tablicy listy kategorii artykułów.
Jak do tego dopiąć wygląd komentarzy? Obiekt template jest tworzony wcześniej niż sprawdzanie komentarzy, nie mam więc pojęcia, jak do już utworzonego obiektu "dopiąć" w razie potrzeby dodatkowe metody. Co prawda mógłbym ten kod przenieść do głównej klasy template, ale po co mi metody odpowiedzialne za komentarze tam, gdzie ich nie ma (a potrzeba występuje w mniejszości dostępnych modułów). Myślałem o tym, aby w obiekcie komentarzy utworzyć obiekt odpowiedzialny za ich wygląd, czyli robię z komentarzy coś jakby zupełnie oddzielny moduł taki jak news, tyle że występujący wewnątrz innego modułu a nie samodzielnie. No ale nie jestem pewien, czy to dobre i eleganckie rozwiązanie.