Zacznijmy kurs

Funkcje

Rozdział 17. Funkcje

Funkcje zdefiniowane przez użytkownika

Funkcja może być zdefiniowana używając składni takiej jak poniższa:

Przykład 17-1. Pseudo-kod ilustrujący zastosowanie funkcji

<?php
function foo ($arg_1, $arg_2, /* ..., */ $arg_n)
{
    echo
"Przykładowa funkcja.\n";
    return
$retval;
}
?>

Dowolny poprawny kod PHP może się pojawić wewnątrz funkcji, także definicje innych funkcji i klas.

Nazwy funkcji podlegają takim samym ograniczeniom jak wszystkie inne etykiety w PHP. Poprawna nazwa funkcji zaczyna się od litery lub podkreślenia, po których następuje dowolna liczba liter, liczb lub podkreśleń. Powyższa zasada w postaci wyrażenia regularnego przedstawia się następująco: [a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*.

W PHP 3, funkcje muszą być zdefiniowane przed odwołaniem do nich. W PHP 4 nie ma takiego wymagania. Wyjątkiem jest warunkowe definiowanie funkcji, tak jak pokazano to w dwóch przykładach zamieszczonych poniżej.

Kiedy funkcja jest definiowana w postaci warunkowej, tak jak to przedstawiono na dwóch poniższych przykładach, jej definicja musi następować przed jej wywołaniem.

Przykład 17-2. Funkcje warunkowe

<?php

$makefoo
= true;

/* Nie można wywołać foo() z tego miejsca,
   ponieważ funkcja ta jeszcze nie istnieje.
   Można natomiast wywoÅ‚ać bar() */

bar();

if (
$makefoo) {
  function
foo()
  {
    echo
"Nie istnieję dopóki wykonanie programu nie dojdzie do tego miejsca.\n";
  }
}

/* W tym momencie można spokojnie wywołać foo()
   ponieważ $makefoo ma wartość true */

if ($makefoo) foo();

function
bar()
{
  echo
"Istnieję od samego początku działania programu.\n";
}

?>

Przykład 17-3. Funkcje wewnątrz funkcji

<?php
function foo()
{
  function
bar()
  {
    echo
"Nie istnieję dopóki foo() nie zostanie wywołana.\n";
  }
}

/* Nie można wywołać bar()
   ponieważ nie istnieje. */

foo();

/* Teraz można wywołać bar(),
   ponieważ wywoÅ‚anie foo() utworzyÅ‚o
   tÄ… funkcjÄ™. */

bar();

?>

Wszystkie funkcje i klasy w PHP mają zasięg globalny - można je wywołać spoza ciała funkcji, nawet jeśli zostały w niej zdefiniowane, i vice versa.

PHP nie obsługuje przeciążania funkcji. Nie jest także możliwa od-definiowanie lub przedefiniowanie wcześniej zadeklarowanych funkcji.

Notatka: W nazwach funkcji nie jest istotna wielkość znaków, jednakże dobrze jest wywoływać funkcje tak, jak zostały zdeklarowane.

PHP 3 nie obsługuje funkcji o zmiennej liczbie argumentów, ale obsługuje domyślne argumenty (zobacz rozdzial Wartości domyślne argumentów aby uzyskać więcej informacji). Od wersji PHP 4 obsługiwane są jedne i drugie: zobacz Listy argumentów o zmiennej długości i opisy funkcji func_num_args(), func_get_arg(), i func_get_args() aby uzyskać więcej informacji.

W PHP możliwe jest rekurencyjne wywoływanie funkcji. Należy jednak unikać rekurencyjnych wywołań funkcji lub metod o głębokości większej niż 100-200 poziomów, gdyż może to zniszczyć stos i spowodować przerwanie działania skryptu.

Przykład 17-4. Funkcje rekurencyjne

<?php
function rekurencja($a)
{
    if (
$a < 20) {
        echo
"$a\n";
        
rekurencja($a + 1);
    }
}
?>


mario download

WÄ…tki z forum o php

Najnowsze posty naszych userów

Samsung 640 GB 7200rpm SATA2 16MB CACHE (HD642JJ)
Witam
chce kupiæ nowy dodatkowy dysk

o taki
Samsung 640 GB 7200rpm SATA2 16MB CACHE (HD642JJ) co o nim s±dzicie? warto?

mam pytanie co mam jeszcze kupiæ oraz gdzie podpi±æ napiêcie

oto screen




pozdrawiam
Jak skróciæ utwór muzyczny np. z 3 min do 30s.
Witam,
S³uchaj±c muzykê w Windows Media Player zastanawiam sie jak skróciæ utwór mu¿yczny do potrzebnej mi d³ugo¶ci.
Mo¿e kto¶ podpowie jak to zrobiæ.
Pozdrawiam,
Kontroler obrotów
Mam ch³odzenie Pentagram Alpaya AM2 S775, do ch³odzenia by³ do³±czony kontroler obrotów, lecz ten nie chce dzia³aæ...
Gdy pod³±cze wentylator odrazu do p³yty to krêci siê, ale strasznie g³o¶no, a gdy pod³±cze do niego kontroler obrotów to wogóle siê nie krêci. Co mo¿e byæ nie tak?


Problemem bylo to, ze autor nie pozostawil mozliwosci zmian, wiec za pomoca programu PHP WebPage Editor zmienilem pewne potrzebne mi wartosci (ilosci wojsk - to akurat bylo latwe do znalezienia...), ale nie wiem, ktore wartosci odpowiadaja za czas wysylania tych jednostek wojska - chce zmienic z tych kilkunastu sekud na ok 1,5 godz... (to dziwne, bo nie jest to regularne - niektore ataki wychodza co 10 sek, niektore co 15 albo 20.