WebDeveloper
 g│≤wna | forum manual | skrypty |  artyku│y |  projekty | porady |  zasoby |  linki 
dzia│y
  •  manual PHP
  •  skrypty PHP
  •  artyku│y
  •  projekty
  •  porady
  •  zasoby
  •  linki
  •  
    forum
  •  php
  •  apache
  •  mysql
  •  postgresql
  •  faq php
  •  pomocnik php
  •  
    news
  • Porcjowanie wynik≤w zapytania
  • Kartki Internetowe
  • PHP + MySQL + Windows 98
  • Bezpieczne uploadowanie plik≤w
  • Przegl▒danie obrazk≤w z bazy PostgreSql.
  • Co to jest WebDeveloper?
  • Instalujemy serwer baz danych !
  • Sesje w PHP4 !
  • Dodaj poradΩ !!!
  • Zastosowano... PHP !
  • redakcja

    Je╢li masz ciekawe informacje odno╢nie PHP, skrypty, porady, linki itp. lub chcia│by╢ wsp≤│tworzyµ serwis PHP.zone.pl daj nam znaµ na email !



    dodaj poradΩ !


    Powered by:
    PHP
    Apache
    MySql
    Linux

    users online: 8

    Rozdzia│ 12. Funkcje

    Funkcje definiowane przez u┐ytkownika

    Funkcja mo┐e byµ definiowana przy u┐yciu sk│adni:

    function foo ($arg_1, $arg_2, ..., $arg_n) {
        echo "Przyk│ad funkcji.\n";
        return $retval;
    }
          

    Jakikolwiek prawid│owy kod jΩzyka PHP mo┐e byµ zawarty wewn▒trz funkcji, tak┐e inne funkcje oraz definicje klasy.

    W php funkcje musza byµ zdefiniowane zanim okre╢lisz do nich referencje. Wymagania takie nie odnosz▒ siΩ do PHP4.

    PHP nie wspiera funkcji prze│adowanych, nie jest tak┐e mo┐liwe skasowanie czy przedefiniowanie wcze╢niej zadeklarowanej funkcji.

    php nie obs│uguje zmiennej liczy argument≤w funkcji, wspiera za╢ domy╢lne argumenty (wiΩcej informacji uzyskasz w sekcji Domy╢lne warto╢ci argument≤w). PHP4 wspiera zmienn▒ d│ugo╢µ listy argument≤w.

    Argumenty funkcji

    Dane mog▒ byµ przes│ane do funkcji poprzez listΩ argument≤w, kt≤re s▒ oddzielone od siebie przecinkami.

    PHP wspiera przesy│anie argument≤w przez warto╢µ (domy╢lnie), przez referencjΩ oraz obs│uguje domy╢lne warto╢ci argument≤w. Zmiennej d│ugo╢ci listy argument≤w s▒ wspierane tylko w PHP4 i p≤╝niejszych.

    Przekazywanie argument≤w przez referencjΩ

    Domy╢lnie, argumenty funkcji s▒ przekazywane przez warto╢µ (wiΩc je┐eli zmienisz warto╢µ argumentu wewn▒trz funkcji, to zmiana ta nie dotyczy argumentu na zewn▒trz funkcji). Je┐eli chcesz umo┐liwiµ funkcji modyfikowanie jej argument≤w, musisz przekazaµ je do funkcji poprzez referencjΩ.

    Je┐eli chcesz aby argumenty funkcji zawsze by│y przekazywane przez referencjΩ, poprzedziµ nazwΩ argumentu w nag│≤wku funkcji znakiem ampersandu (&):

    function add_some_extra(&$string) {
        $string .= 'i co╢ extra.';
    }
    $str = 'To jest │a±cuch, ';
    add_some_extra($str);
    echo $str;    // wyrzuci 'To jest │a±cuch, i co╢ extra.'
           

    Je┐eli chcesz przekazaµ zmienn▒ poprzez referencjΩ do funkcji, kt≤ra nie robi tego domy╢lnie, poprzed╝ znakiem ampersandu nazwΩ argumentu w wywo│aniu funkcji:

    function foo ($bar) {
        $bar .= ' i co╢ extra.';
    }
    $str = ' To jest │a±cuch, ';
    foo ($str);
    echo $str;    // wyrzuci 'To jest │a±cuch, i co╢ extra.'
    foo (&$str);
    echo $str;    // wyrzuci 'To jest │a±cuch, i co╢ extra.'
    

    Domy╢lna warto╢ci argumentu

    Funkcja mo┐e mieµ zdefiniowan▒ domy╢ln▒ warto╢µ dla argument≤w skalarnych:

    function makecoffee ($type = "cappucino") {
        return "Making a cup of $type.\n";
    }
    echo makecoffee ();
    echo makecoffee ("espresso");
           

    Wynikiem powy┐szego zapisu jest :

    Making a cup of cappucino.
    Making a cup of espresso.
          

    Domy╢lna warto╢µ musi byµ sta│▒, nie mo┐e byµ zmienn▒ lub metod▒ klasy.

    W PHP 4.0 jest mo┐liwe okre╢lenie warto╢ci unset jako domy╢ln▒ warto╢µ argumentu. Oznacza to, ┐e argument nie bΩdzie okre╢lony dop≤ki nie zostanie dostarczona jaka╢ warto╢µ. Kiedy u┐ywasz domy╢lnych argument≤w, okre╢l je dopiero po argumentach niedomy╢lnych. Rozwa┐ poni┐szy fragment kodu:

    function makeyogurt ($type = "acidophilus", $flavour) {
        return "Making a bowl of $type $flavour.\n";
    }
     
    echo makeyogurt ("raspberry");   // nie pracuje prawid│owo
           

    Wynikiem powy┐szego przyk│adu jest:

    Warning: Missing argument 2 in call to makeyogurt() 
    in /usr/local/etc/httpd/htdocs/phptest/functest.html 
    on line 41
    Making a bowl of raspberry .
          

    Teraz por≤wnaj powy┐sze z tym co poni┐ej:

    function makeyogurt ($flavour, $type = "acidophilus") {
        return "Making a bowl of $type $flavour.\n";
    }
     
    echo makeyogurt ("raspberry");   // pracuje prawid│owo
           

    Wynikiem tego przyk│adu jest:

    Making a bowl of acidophilus raspberry.
         

    Lista argument≤w o zmiennej d│ugo╢ci

    PHP4 obs│uguje listy argument≤w o zmiennej d│ugo╢ci w funkcjach zdefiniowanych przez u┐ytkownika. S│u┐▒ temu funkcje: func_num_args(), kt≤ra zwraca liczbΩ argument≤w przes│anych do funkcji, func_get_arg(), kt≤ra zwraca element z listy argument≤w oraz func_get_args() zwracaj▒ca tablicΩ zawieraj▒c▒ listΩ agrument≤w funkcji.

     

    Zwracane warto╢ci

    Warto╢ci mog▒ byµ zwracane przy u┐yciu wyra┐enia return. Jakikolwiek typ mo┐e byµ zwr≤cony, w│▒cznie z listami i objektami.

    function kwadrat ($num) {
        return $num * $num;
    }
    echo kwadrat(4);   // wyrzuci '16'.
          

    Nie mo┐na zwracaµ wielu warto╢ci z funkcji, ale mo┐na zwracaµ tablicΩ warto╢ci.

    function small_numbers() {
       return array (0, 1, 2);
    }
    list ($zero, $one, $two) = small_numbers();
          

    old_function

    Wyra┐enie old_function pozwala deklarowaµ funkcjΩ u┐ywaj▒c sk│adni identycznej do tej z PHP/FI2 (przypuszczalnie musisz zast▒piµ 'function' wyra┐eniem 'old_function')

    Wyra┐enia tego stosuj tylko dla konwersji PHP/FI2->php.

    Ostrze┐enie

    Funkcje deklarowane jako old_function nie mog▒ byµ wywo│ywane z kodu PHP. Oznacza to, ┐e nie mo┐na u┐ywaµ ich w funkcjach takich jak usort(), array_walk() i register_shutdown_function(). Mo┐esz obej╢µ to ograniczenie poprzez napisanie funkcji os│onnej (w normalnej formie dla php) do wywo│ania old_function.

     

    Zmienna funkcji

    PHP wspiera pojΩcie zmiennej funkcji. Oznacza to, ┐e je┐eli nazwa zmiennej posiada na ko±cu nawiasy to PHP bΩdzie szukaµ funkcji z identyczn▒ nazw▒ jak analizowana zmienna i pr≤bowaµ j▒ wykonaµ.

    Przyk│ad 12-1. Przyk│ad zmiennej funkcji

    <?php
    function foo() {
       echo "In foo()<br>\n";
    }
     
    function bar( $arg = '' ) {
       echo "In bar(); argument was '$arg'.<br>\n";
    }
     
    $func = 'foo';
    $func();
    $func = 'bar';
    $func( 'test' );
    ?>
             

     

    wstecz spis tresci dalej

    kontakt

    autor:

    Hubert Mierzwiak

    wsp≤│praca:

    Piotr Karolak

    Chcesz prowadziµ sw≤j dzia│ tematyczny typu XML, SQL, admin, JavaScript, itp?
    Napisz do nas !
     
    skrypty
  • designer.zip
  • vipAuth.tgz
  • phpCenzura.tgz
  • vip_php.tgz
  • pomocnik_light
  • ankieta
    Co s▒dzisz o stworzeniu FAQ PHP?
    super!
    po co?

    poprzednie

    newsletter

    wpisz sw≤j email i wci╢nij Enter

    linuxnews.pl
  • KRRiTV stra┐nikiem!?
  • Dzisiejsze zebranie...
  • Felieton w warunkach ekstremalnych
  • Nexidion Designer
  • Solaris OpenSource
  • KDE 2.0.1
  • Jest ju┐ nowy Debian...
  • Tydzie± min▒│...




  • Manual | Skrypty | Artyku│y | Projekty
    Porady | Zasoby | Linki
    G│≤wna | Forum

    Copyright 2000 Hubert Mierzwiak