Nauka

Krótki kurs, aby zapoznać się z podstawami języka

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

Posty z forum

Ostatnie wiadomości z grupy dyskusyjnej

problem z komputrem
Proponuje sciagnac u kolegi i wypalic na plycie obraz z programem antywirusowym, np. Kaspersky Rescue Disk...
Router TL-R402M-problem
Router nie powinien powodowac takich rzeczy. Jestes pewny, ze to nie wina serwerow skad pobierasz dane ? Czy jest tak w konkretnym programie, np. do...
"We pay for your Mio" - dajcie znać
Jesli ktos zaryzykował i kupił nawigacje Mio i zamiast gwarantowanych 10 Euro postanowił zagrać o 100 niech da znac jeśli wygra. Ciekawi mnie jak to...
poradzcie mezczyzni jaka nawigacje kupic:)
Ja tez nie mogę wziąc udziału bo już mam jednego takiego....:( Ale pomysł fajny. Kumpel mówił, że ta gierka jak się gra o 100 Euro jest nieźle...
problem z kamerą internetową
witam. mam ten sam problem z kamerka i sys Vista. Jezeli jest ktos zyczliwym na tym forum to prosze o przeslanie sterownikow do visty na mojego...

Mam problem. Otóż: pole na tekst to grafika. Chcę aby to jaśniejsze pole było czymś w rodzaju nie wiem... ramki, pływającej ramki. Po prostu, żebym mógł tam pisać, żeby było to tło (jaśniejsze pole), oraz aby się mogło przewijać.