PHP/Funkcijos
PHP Programavimas |
---|
Redaguoti |
Įžanga
[keisti]Funkcijos (kartais vadinamos metodais) yra būdas grupuoti bloką fukcijų nevienkartiniam paprastam naudojimui.
Funkcijos programavime yra panašios į matematines funkcijas (pvz.: sin(x) - duos tam tikrą skaičių priklausomai nuo rezultato). Funkcijos pagreitina darbą.
Norėdami surasti pilną PHP funkcijų sarašą, užeikite į PHP interneto puslapį http://www.php.net/manual/en/funcref.php.
Funkcijų kūrimas
[keisti]PHP funkcijos aprašymas panašus į C stilių
function funkcijos_vardas([parameterai]) { // kodas return true; }
- function žodis nusako parser`iui kad jūs deklaruojante funkciją.
- Kiekviena funkcija turi savo vardą (funkcijos_vardas).
- Funkcijos turi parametrus, jei juos nustatote
- Return gražina kokį nors kintamajį ar panašiai. Jo nebūtina rašyti. Tuo atveju funkcija gražins NULL.
Kviečiant funkciją PHP kalboje
[keisti]Žinokite, kad echo nėra funkcija, todėl jai nereikia skliaustų.
Kviečiant funkciją jums leis nepaleisti ir naudoti ta funkciją leidžiant skriptą.
print('Mano vardas yra Petras');
Rašant funkciją kitame bloke:
<?php if ( $a == 72 ) { print('Mano vardas yra Petras. $a yra 72'); } ?>
Kviečiant funkciją ir gaunant rezultatą:
<?php $rezultatas = sudeti($a, 5); ?>
Naudojant kitų funkcijų blokuose:
<?php while ( $i < count($vienas) ) { echo count(range(1,$i))."<br>\n"; } ?>
Parameterai
[keisti]Parameterai yra kintamieji, kurie egzistuoja tiktai pačioje funkcijoje. Juos galima paduoti kaip vidinius kintamuosius arba kaip rodykles:
<?php function sudeti($vienas, $du) { $rezultatas = $vienas + $du; return $rezultatas; } ?> Norint iškviesti šią funkciją, reikia paduoti du parametrus: <?php echo sudeti(1,5); ?>
Retkarčiais, programuotojas nenorėtu naudoti visų parametrų, arba tiesiog nerašyti jų (nes jie gali būti vienodi):
<?php function sudeti($vienas = 10, $du = 15) { return $vienas + $du; } echo sudeti()."\n"; echo sudeti(1)."\n"; echo sudeti(1,2)."\n"; ?>
Pridėti parametrų numerį be limito yra paprasta, naudojant func_num_args, func_get_args ir func_get_arg funkcijomis:
<?php function vidurkis() { $sudetis = 0; $parametru_numeris = func_num_args(); for ( $i = 0; $i < $param_count; $i++ ) { $sudetis += func_get_arg($i); } $vidurkis = $sudetis / $parametru_numeris; return $vidurkis; } echo vidurkis(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20); ?>
Arba dar paprasčiau:
<?php function vidurkis() { $all = func_get_args(); return array_sum($all) / count($all); } echo vidurkis(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20); ?>
Grąžinant duomenis
[keisti]Duomenis galima grąžinti dviejais budais: return naudojimu:
<?php function duok_penkis() { return 5; } $kin = 0; $kin = duok_penkis(); ?>
arba, naudojantis sujungtais parametrais:
<?php function duok_penkis(&$var) { $var = 5; } $kin = 0; duok_penkis($kin); ?>
Žinokite, kad return sustabdo funkciją ir tęsia leidimą po funkcijos kvietimo. Grąžinant skirtingus duomenis galima naudoti masyvus:
<?php function duok_numerius() { $ret = array(); $ret[] = 1; $ret[] = 5; $ret[] = 80; return $ret; } print_r(duok_numerius()); ?>
Realaus laiko funkcijų naudojimas
[keisti]Programuotojas gali kurti funkcijas vietoj function vardas($parametras...) {} sintakses. Šitokie metodai leidžia kurti funkcijas dinamiškai.
Kviečiant funkciją, kurios vardas yra kintamojo reikšmė
[keisti]Galima tai daryti dviem būdais, tiesioginiu kvietimu arba call_user_func or call_user_func_array:
Tiesioginis funkcijos kvietimas
[keisti]<?php $tekstas = "\n\n"; $funckcijos_pavadinimas = "nl2br"; $isvedimas = $funckcijos_pavadinimas($tekstas); echo $isvedimas; ?>
Klasės kvietimas:
<?php $patikrinti = "bZz..."; $klases_vardas = "mano_klase"; $funkcijos_vardas = "mano_funkcija"; ${$klases_vardas}->$funkcijos_vardas($patikrinti); ?>
Šis kodas dirba taip pat kaip:
<?php $patikrinti = "bZz..."; $mano_klase->mano_funkcija($patikrinti); ?>
call_user_func* naudojimas
[keisti]Šiuose pavyzdžiuose bus naudojama daugiau nei vienas parametras tik parodyti kaip galima naudotis šiomis galimybėmis:
<?php class Some_Class { function my_function($text1, $text2, $text3) { $return = $text1."\n\n".$text2."\n\n".$text3; return $return; } } $my_class=new Some_Class(); ?>
call_user_func:
<?php $one = "One"; $two = "Two"; $three = "Three"; $callback_func = array(&$my_class,"my_function"); $result = call_user_func($callback_func,$one,$two,$three); echo $result; ?>
call_user_func_array:
<?php $one = "One"; $two = "Two"; $three = "Three"; $callback_func = array(&$my_class,"my_function"); $result = call_user_func_array($callback_func,array($one,$two,$three)); echo $result; ?>
Kviečiant paprastą funkciją: call_user_func:
<?php $one = "One"; $two = "Two"; $three = "Three"; $callback_func = "my_function"; $result = call_user_func($callback_func,$one,$two,$three); echo $result; ?>
call_user_func_array:
<?php $one = "One"; $two = "Two"; $three = "Three"; $callback_func = "my_function"; $result = call_user_func_array($callback_func,array($one,$two,$three)); echo $result; ?>
Sudėtingesni pavyzdžiai
[keisti]<?php $my_func($param1, $param2); ${$my_class_name}->$my_func($param1, $param2); call_user_func($my_func, $param1, $param2); call_user_func(array(&${$my_class_name}, $my_func), $param1, $param2); call_user_func_array($my_func, array($param1, $param2)); // Most powerful, dynamic example call_user_func_array(array(&${$my_class_name}, $my_func), array($param1, $param2)); ?>
Kuriant realaus laiko funkcijas
[keisti]<?php $function_name=create_function('$one, $two','return $one+$two;'); echo $function_name."\n\n"; echo $function_name("1.5", "2"); ?>