PHP Funkcijos

Funkcijos (kartais vadinamos metodais) yra būdas grupuojant bloką fukciju nevienkartiniam paprastam naudojimui.

Funkcijos programavime yra paprasčiausiai kaip matematines funkcijos (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://lt2.php.net/manual/en/funcref.php.

Funkcijų kūrimas

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 (nulį).

Kviečiant funkciją PHP kalboje

Žinokite kad 'echo' nėra funkcija, todėl jai nereikia skliaustų.

Kviečiant funkciją jums leis npaleisti ir naudoti ta funkcija leidziant skripta. print('Mano vardas yra Petras'); Rasant funkcija 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) ) {
  <nowiki>echo count(range(1,$i))."<br>\n";</nowiki>
}
?>

Parameterai

Parameterai yra kintamieji kurie egzistuoja tik 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 buti dažnai vienodi):

<?php
function sudeti($vienas = 10, $du = 15) {
  return $vienas + $du;
}
echo sudeti()."\n";
echo sudeti(1)."\n";
echo sudeti(1,2)."\n";
?>

Kartais Jūs norėtumėte pridėti parametrų numerį be limito. Tai yra paprasta, naudojant func_num_args, func_get_args ir func_get_arg funkcijas:

<?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 paprašč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

Duomenis galima grąžinti dviejais budais: return naudojimu:

<?php
function duok_penkis() {
  return 5;
}
$kin = 0;
$kin = duok_penkis();
?>

arba, naudojant 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. Tam galima naudoti masyvus:

<?php
function duok_numerius() {
  $ret = array();
  $ret[] = 1;
  $ret[] = 5;
  $ret[] = 80;
  return $ret;
}
print_r(duok_numerius());
?>

Gyvo laiko funkcijų naudojimas

Programuotojas gali kurti funkcijas vietoj 'function vardas($parametras…) {}' sintaksės. Šitokie metodai leidžia kurti funkcijas dinamiškai.

Kviečiant funkciją kurios vardas yra kintamojo reikšmė

Galima tai daryti dviem būdais, tiesioginiu kvietimu call_user_func arba call_user_func_array:

Tiesioginis funkcijos kvietimas

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

Šitas kodas dirba taip pat kaip

<?php
$patikrinti = "bZz...";
$mano_klase->mano_funkcija($patikrinti);
?>

call_user_func() naudojimas

Šiuose pavyzdžiuose, bus naudojama daugiau nei vienas parametras tik parodymui kaip galima naudotis šiomis galimybemis:

<?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

<?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));
// Sudėtingesnis pavyzdys
call_user_func_array(array(&${$my_class_name}, $my_func), array($param1, $param2)); 
?>

Kuriant gyvo laiko funkcijas

<?php
$function_name=create_function('$one, $two','return $one+$two;');
echo $function_name."\n\n";
echo $function_name("1.5", "2");
?>

Verta paskaityti

Pasidomėkite → create_function()

Discussion

Enter your comment (wiki syntax is allowed):

Asmeniniai įrankiai