Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Funkcje
Forum PHP.pl > Forum > Przedszkole
olkaa
Funkcje
  1. function funkcja1()
  2. {
  3. echo 'Hello World';
  4. }
  5. funkcja1();
  6.  
  7. // return
  8. function funkcja2()
  9. {
  10. return 'Hello World';
  11. }
  12. echo funkcja2();


Czy się róźnią te dwie funkcje? Kiedy stosować zwykłą tak jak w pierwszym, a kiedy z return?
Quantum
Pierwsza drukuje odrazu tekst bez jego zwracania, co utrudnia późniejsze operacje na nim. Druga zwraca wynik, możesz łatwo go np: przypisać do zmiennej, albo podać w parametrach innej funkcji i dopiero wtedy wypisać na ekran.

kiedy stosować return ? zawsze winksmiley.jpg sytuacja: chcę wyświetlić wynik funkcji uprzednio odwrócony.

  1. function funkcja1($str)
  2. {
  3. return $str . '...';
  4. }
  5.  
  6. $wynik = funkcja1('abc');
  7. echo strrev($wynik);
Largo
Cytat(olkaa @ 11.10.2010, 13:28:54 ) *
Funkcje
  1. function funkcja1()
  2. {
  3. echo 'Hello World';
  4. }
  5. funkcja1();
  6.  
  7. // return
  8. function funkcja2()
  9. {
  10. return 'Hello World';
  11. }
  12. echo funkcja2();


Czy się róźnią te dwie funkcje? Kiedy stosować zwykłą tak jak w pierwszym, a kiedy z return?


Funkcja powinna zwracać dane z funkcji, a nie je wyświetlać. Wyświetlanie zostaw poza funkcją, a w funkcji obrabiaj lub zwracaj dane. Użycie echo w funkcji raczej mija się z celem.
marcio
Roznica jest taka ze return nie zwraca odrazu wyniku do przegladarki, ale musisz uzyc echo do tego.
Roznica jest taka jak widzisz jesli jest return musisz potem dac echo jesli chcesz wyswietlic dane jesli jest juz echo nie ma takiej potrzeby ;]
olkaa
Byłabym wdzięczna za proste przykłady, żebym mogła zobaczyć róźnicę...
Zyx
Jeden prosty przykład masz już wyżej. Spróbuj w nim zmienić "return" na "echo" i zobaczysz, że przestanie działać. Ogólnie przypomnij sobie funkcje matematyczne, np. sin(), bo ogólna zasada jest podobna. Do funkcji podajesz jakieś argumenty, a one obliczają Ci wynik, z którym możesz coś później zrobić, np. użyć w jakimś wzorze. Zauważ, że wynik funkcji matematycznej zależy wyłącznie od podanych jej argumentów. Jest to bardzo ważna cecha - ogólnie takie funkcje (zwane "czystymi", jak kogoś to interesuje) są najlepsze i bardzo pożądane. Zatem zapiszmy sobie takiego sinusa:

Kod
$a + $b + sin($c)


Widzisz? Mogę wykonać to obliczenie, bo sin() obliczoną wartość zwraca. Ale napiszemy sobie teraz inny wariant tej funkcji:

Kod
function sin_alt($x)
{
   // tutaj obliczenia matematyczne
   echo $wynikObliczen;
} // end sin_alt();


I nagle przestaje być wesoło:


Kod
$a + $b + sin_alt($c)


Takie wyrażenie już nam nie zadziała, bo Twoja funkcja zamiast zwrócić ten wynik, by mógł się nim zająć operator dodawania, wysłała go do przeglądarki. Twój sin_alt() nie zwraca teraz żadnej wartości, więc powyższe wyrażenie przestaje być poprawne.

Kiedy co stosować? Pierwsze - prawie nigdy, drugie - prawie zawsze. W swoich aplikacjach echo mam tylko w kodzie generującym wynikowy HTML i ten kod prawie w ogóle nie korzysta z funkcji. Cała reszta aplikacji zwraca wyniki przez return.
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.