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");
?>