Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Wyświetlanie komunikatów
Forum PHP.pl > Forum > Przedszkole
miras
Witam, piszę sobie mały skrypcik obiektowo w PHP i napotkałem pewien problem.


A mianowicie mam pewien plik index.php do którego są includowane pozostałe pliki - zależnie od tego, co podamy w gecie.

i chciałbym sobie napisać jakąś metodę wyświetlającą przekazane do niej komunikaty - czyli np.


  1. public function showStatement($statement) {
  2. return ($statement);
  3. }
  4.  
  5.  
  6. public function przykladowa($parametr) {
  7. if ($parametr == 2) {
  8. $this->showStatement("komunikat");
  9. }
  10.  
  11. }
  12.  
  13.  




  1.  
  2. { -> To jest index.php
  3.  
  4. W tym miejscu chciałbym wyświetlać komunikat.
  5.  
  6. {
  7. -> Tu wywołuję przykladowa(2);
  8. }
  9.  
  10.  
  11. }
  12.  
  13.  
  14.  
  15.  




Ma ktoś jakiś fajny pomysł?

emstawicki
Skonstruuj porsty mechanizm oparty np. o sesje (coś a'la flashdata), które będzie gromadziło wiadomości do wyświetlania a po wyświetleniu czyściło tablicę wiadomości.
miras
Czyli po prostu w metodzie showStatement będę tworzył sesje z komunikatem, zrobię sobie kolejną metodę do wyświetlania komunikatu i np. przekażę zawartosc sesji do zmiennej, usunę tą sesje i zmienną z komunikatem zwrócę, dobre rozwiązanie?
emstawicki
Utwórz najlepiej to jako osobną klasę.
Stwórz sesję, która będzie tablicą komunikatów (treść, opcjonalnie typ).
W klasie metody do dodawania, zwracania. W konstruktorze czyść zawsze tablicę zapisaną w sesji (chyba że chcesz uwzględnić regenerowanie komunikatu).
Dodatkowo proponuję serializować dane podczas dodawania i formatować je dopiero podczas wyświetlania widoku komunikatu.
miras
Ok, jest to jakieś rozwiązanie, napisałem to na szybko i jest pewien problem.


ja chciałbym wyświetlać ten komunikat nad tym "includem" (wiem, że mogę to zrobić w css, ale nie chcę)


  1. { -> To jest index.php
  2.  
  3. W tym miejscu wywołuję showStatement i działa dopiero po odświeżeniu strony
  4.  
  5. {
  6. -> Tu wywołuję przykladowa(2);
  7. }
  8.  
  9. natomiast jeżeli wywołam showStatement w tym miejscu to już jest wszystko ok, bo tak naprawdę tworzę tą sesje gdzieś tam w środku tych "includowanych plików", to jest logiczne, że zadziała to tak, a nie inaczej, ma ktoś pomysł jak temu zaradzić?
  10.  
  11.  
  12. }
  13.  
nospor
Masz zle zaprojektowana aplikacje. Wypadaloby to poprawic poki to jeszcze jest na etapie rozwoju.

Najpierw logika aplikacji, dopiero potem wyswietlanie.
Teraz mieszasz jedno z drugim.
miras
Nie korzystam z żadnego fw ani nic w tym stylu, mam kilka metod, mam plik index.php, w którym jak już pisałem includuję pliki w zależności od tego, co podam w gecie i w tych plikach odpalam te metody, a w tych metodach dopiero tworzę komunikaty, w jaki sposób mógłbym to naprawić nie zaczynając tego od nowa ? :/

Jak tak teraz sobie myślę, będę musiał te includowane pliki rozbić na 2 - widok i logika, bo chyba nie będzie innej opcji?
nospor
Tak, by robic to poprawnie nie musisz uzywac zadnego FW jak nie chcesz.
Tak, musisz wpiero robic logike, potem wyswietlanie. Wpierw includujesz plik od logiki danej akcji, potem plik od widoku danej akcji.
miras
Dzięki smile.gif
nospor
Kiedys splodzilem klase do widokow. Razem z klasa podalem przyglad malej aplikacji, w ktorej masz ladnie rozdzielona logike od widoku. Jak chcesz mozesz sobie przejrzec.
http://nospor.pl/klasa-widoku.html

emstawicki
Dokładnie jak @nospor nakreślił. Może w PHP długo szukać rozwiązania będącym całkowicie zgodne ze wzorcem MVC, ale poczytaj o nim i chociaż zobacz jak jakieś frameworki działają (nawet te proste). Wtedy Twoja nowa klasa do obsługi komunikatów będzie składową częścią rdzenia całej Twojej aplikacji.
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.