Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Funkcje
olkaa
post 11.10.2010, 14:28:54
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 (1 - 5)
Quantum
post 11.10.2010, 14:33:58
Post #2





Grupa: Zarejestrowani
Postów: 450
Pomógł: 84
Dołączył: 27.11.2008
Skąd: Warszawa

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


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);


Ten post edytował Quantum 11.10.2010, 14:38:06
Go to the top of the page
+Quote Post
Largo
post 11.10.2010, 14:34:06
Post #3





Grupa: Zarejestrowani
Postów: 203
Pomógł: 6
Dołączył: 11.09.2005

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


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.
Go to the top of the page
+Quote Post
marcio
post 11.10.2010, 14:34:17
Post #4





Grupa: Zarejestrowani
Postów: 2 291
Pomógł: 156
Dołączył: 23.09.2007
Skąd: ITALY-MILAN

Ostrzeżenie: (10%)
X----


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 ;]


--------------------
Zainteresowania: XML | PHP | MY(SQL)| C# for .NET | PYTHON
http://code.google.com/p/form-builider/
Moj blog
Go to the top of the page
+Quote Post
olkaa
post 11.10.2010, 14:40:11
Post #5





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

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


Byłabym wdzięczna za proste przykłady, żebym mogła zobaczyć róźnicę...
Go to the top of the page
+Quote Post
Zyx
post 11.10.2010, 14:48:17
Post #6





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


--------------------
Specjalista ds. głupich i beznadziejnych, Zyx
Nowości wydawnicze: Open Power Collector 3.0.1.0 | Open Power Autoloader 3.0.3.0
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 21.06.2025 - 19:55