Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 58 Pomógł: 5 Dołączył: 12.12.2008 Ostrzeżenie: (0%)
|
Witam.
Witam. Mam taki problem. Załóżmy, że mam sobie taką funkcję function wyswietl() { echo "2"; echo "+"; echo "2"; } następnie chciałbym to co zostanie wyświetlone przy użyciu tej funkcji wrzucić jakoś do zmiennej, czyli coś w stylu $zmienna = wyswietl(); // to oczywiscie glupi przyklad (IMG:style_emoticons/default/wink.gif) Teraz $zmienna żeby zawierała "2+2". Jak to można mądrze zrobić, bo mam jakieś zaćmienie umysłu. Dzięki. Pozdrawiam. |
|
|
|
![]() |
Post
#2
|
|
|
Grupa: Zarejestrowani Postów: 890 Pomógł: 65 Dołączył: 13.11.2005 Skąd: Olsztyn Ostrzeżenie: (0%)
|
Ogólnie - funkcja/metoda klasy nie ma prawa wyświetlać czegokolwiek. Może tylko i wyłącznie zwracać wartość... Ten post edytował drPayton 11.06.2011, 13:54:56 |
|
|
|
Post
#3
|
|
|
Grupa: Zarejestrowani Postów: 362 Pomógł: 44 Dołączył: 10.06.2009 Ostrzeżenie: (0%)
|
Funkcja może wyświetlać co się da poprzez echo, jednak jeśli chodzi o zapisywanie do zmiennej to tylko i wyłącznie return (IMG:style_emoticons/default/wink.gif)
|
|
|
|
Post
#4
|
|
|
Grupa: Zarejestrowani Postów: 890 Pomógł: 65 Dołączył: 13.11.2005 Skąd: Olsztyn Ostrzeżenie: (0%)
|
Powtórzę, bo może niezbyt wyraźnei napisałem:
Funkcja/metoda nie ma prawa wyświetlać czegokolwiek... Lepiej od razu uczyć się dobrych praktyk, niż potem oduczać - jak ktoś nas opieprzy za amatorkę... |
|
|
|
Post
#5
|
|
|
Grupa: Moderatorzy Postów: 4 362 Pomógł: 714 Dołączył: 12.02.2009 Skąd: Jak się położę tak leżę :D |
Mackos. To co postulujesz, czyli funkcja wyświetla dane poprzez echo to klasyczny przykład tego co robią amatorzy i początkujący. Wyświetlać powinna tylko i wyłącznie funkcja do tego przewidziana, a więc tak zwany widok aplikacji. Każda inna powinna zwracać wartość, gdyż może to prowadzić do nieoczekiwanych sytuacji. Potem pojawia się codziennie na forum problem z nagłówkami, bo ktoś nie myśli o konsekwencjach tego co robi i w efekcie zanim nagłówki zostaną do przeglądarki wysłane, jakaś głupia funkcja wali coś do bufora, bo zamiast użyć return, ktoś użył echo. Echo powinno być użyte w sposób świadomy, a nie gdzie popadnie.
Niby różnica niewielka, ale w wielu przypadkach pozwala uniknąć wielu głupich i prostych błędów, takie jak choćby z wspomnianymi nagłówkami. Dlatego przyłączam do tego co napisał drPayton: "Nie ucz początkujących złych praktyk." |
|
|
|
Post
#6
|
|
|
Grupa: Zarejestrowani Postów: 58 Pomógł: 5 Dołączył: 12.12.2008 Ostrzeżenie: (0%)
|
To, żeby zrobić return to ja wiem, jeżeli chodzi zaś o dobre nawyki również jestem tego świadomy.
Nie rozwiązuje to jednak mojego problemu. Czasami trzeba coś zrobić na przekór ogólnym zasadom, aby działało. Czasami też rodzi się pytanie, na które nie ma odpowiedzi i tak jest w tym przypadku (IMG:style_emoticons/default/smile.gif) Nie koniecznie chcę z tego korzystać codziennie, jednak warto wiedzieć jak to zrobić :-> |
|
|
|
Post
#7
|
|
|
Grupa: Zarejestrowani Postów: 54 Pomógł: 12 Dołączył: 4.08.2007 Ostrzeżenie: (0%)
|
Może przy pomocy Output Buffering Control?
ob_start(), a pózniej ob_get_contents()? |
|
|
|
Post
#8
|
|
|
Grupa: Moderatorzy Postów: 4 362 Pomógł: 714 Dołączył: 12.02.2009 Skąd: Jak się położę tak leżę :D |
Czemu więc nie zrobisz tak jak napisałem wyżej?
lub
Zauważ, że dzięki temu drugiemu przykładowi mogę nawet $zmienna użyć gdziekolwiek. A więc choćby jako:
Masę problemów się z takim podejściem omija. |
|
|
|
Post
#9
|
|
|
Grupa: Zarejestrowani Postów: 890 Pomógł: 65 Dołączył: 13.11.2005 Skąd: Olsztyn Ostrzeżenie: (0%)
|
(...) Nie rozwiązuje to jednak mojego problemu. Czasami trzeba coś zrobić na przekór ogólnym zasadom, aby działało. (...) Może przy pomocy Output Buffering Control? ob_start(), a pózniej ob_get_contents()?
Mniej wiecej tak... |
|
|
|
![]() ![]() |
|
Aktualny czas: 23.12.2025 - 16:50 |