PHP/Funkcijos
PHP Programavimas |
---|
Redaguoti |
Įžanga
keistiFunkcijos (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
keistiPHP 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
keistiParameterai 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
keistiDuomenis 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
keistiProgramuotojas 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ė
keistiGalima 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"); ?>