Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Funkcje
olkaa
post
Post #1





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 7.10.2009

Ostrzeżenie: (0%)
-----


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?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Zyx
post
Post #2





Grupa: Zarejestrowani
Postów: 952
Pomógł: 154
Dołączył: 20.01.2007
Skąd: /dev/oracle

Ostrzeżenie: (0%)
-----


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.


Ten post edytował Zyx 11.10.2010, 14:51:02
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 13.10.2025 - 21:43