Funkcja

Z PHPEdia.pl
(Przekierowano z Function)
Skocz do: nawigacji, wyszukiwania

Fragment kodu PHP, który może być wielokrotnie używany w obrębie aplikacji poprzez wywołanie funkcji. Podstawową korzyścią płynącą z zastosowania funkcji jest możliwość uniknięcia pisania wielokrotnie tych samych fragmentów kodu. Przykładem takiego zastosowania funkcji może być sytuacja, w której strona WWW posiada menu, które wygląda identycznie na wszystkich podstronach. Umieszczenie kodu budującego menu w ramach funkcji umożliwia wywoływanie całego menu za pomocą jednego słowa - nazwy funkcji (z ewentualnymi parametrami), zamiast każdorazowego przepisywania całego kodu menu. Poza oszczędnością miejsca i czasu zyskujemy także mniejszą podatność na błędy. Pośrednią korzyścią jaką osiągamy jest fakt, że w razie konieczności zmodyfikowania naszego przykładowego menu, zmianę możemy wprowadzić tylko raz - w funkcji - a nie tyle razy, ile razy wyświetlamy menu.

Przykład funkcji w PHP

// początek "deklaracji funkcji"
function mojaFunkcja(){   
  echo 'Jestem funkcją!'; // ciało funkcji
}
// koniec "deklaracji funkcji"
 
mojaFunkcja(); // wywołanie funkcji

Powyższy przykład wyświetli:

Jestem funkcją!

Argumenty funkcji

Przekazanie jednego argumentu

Funkcja może przyjmować argumenty. Argumenty mogą być danymi dowolnego typu, które są przekazywane funkcji podczas jej wywoływania.

function mojaFunkcja($imie){   
  echo 'Jestem funkcją, którą napisał '; 
  echo $imie;
}
$argument = 'Kuba';
mojaFunkcja($argument); // wywołanie funkcji z argumentem w postaci zmiennej

Powyższy przykład wyświetli:

Jestem funkcją, którą napisał Kuba

Przekazanie wielu argumentów

Argumentów może być wiele, zależy to od deklaracji funkcji. Rozważmy poniższy przykład z trzema argumetami:

function mojaFunkcja($kto, $jakiego, $co){   
  echo $kto.' ma '.$jakiego.' '.$co;
}
mojaFunkcja('Każdy', 'jakiegoś', 'bzika'); // wywołanie funkcji z trzema argumentami

Powyższy przykład wyświetli:

Każdy ma jakiegoś bzika

Argument opcjonalny

Zdarza się, że nie przy każdym wywołaniu funkcji chcemy podawać wartość w argumencie.

function mojaFunkcja($imie, $zarobek=4000){   
  echo $imie.' zarabia '.$zarobek.'zł';
}
mojaFunkcja('Mateusz'); // Wywołujemy

Powyższy kod wyświetli nam

Mateusz zarabia 4000zł

Zaś funkcja wywołana w taki sposób:

mojaFunkcja('Mateusz', 1750);

Wyświetli nam:

Mateusz zarabia 1750zł

Return

Słowo return umieszczone w obrębie funkcji przerywa jej działanie. Jeżeli po słowie umieścimy jakąś wartość, to funkcja wraz z zakończeniem działania zwróci tę wartość. Rozważmy poniższy przykład:

function mojaFunkcja(){   
  echo 'raz ';
  echo 'dwa ';
  return 'a kuku '; // zakończ działanie i zwróć String
  echo 'trzy';
}
$zwrot = mojaFunkcja(); 
echo $zwrot;

Powyższy przykład wyświetli:

raz dwa a kuku

Jak widać, możliwe jest umieszczenie zwracanej przez funkcję wartości w zmiennej. Możliwe jest także bezpośrednie wyświetlenie zwracanej wartości:

function mojaFunkcja(){   
  return 'Dzień dobry!';
}
mojaFunkcja(); // samo wywołanie funkcji nie wyświetli nic
echo mojaFunkcja(); // tym razem wyświetlimy zwracaną przez funkcję wartość

Powyższy przykład wyświetli:

Dzień dobry!

Default

Od PHP 5.6 możliwe jest ustawianie domyślnych argumentów funkcji. W trakcie wykonywania funkcji, aby został użyty ten argument domyślny, należy wstawić default.

<?php
function foo($foo = 1, $foobar = 2, $bar)
{
   return "$foo $foobar $bar\n";
}
echo foo(3, 5, 6);             # wyświetli: 3 5 6
echo foo(default, default, 3); # wyświetli: 1 2 3
?>

Dowolna liczba argumentów oraz argumenty w postaci tablicy

PHP 5.6 wprowadził także możliwość przekazywania dowolnej liczby argumentów; wówczas dodatkowe argumenty są zapisywane w postaci jednej tablicy jako ostatni argument. W tym celu w trakcie definiowania funkcji używa się operatora ...:

<?php
function foo($a, $b, ...$c)
{
   echo "$a $b ";
   foreach($c as $element)
      echo "$element ";
   echo "\n";
}
foo(1, 2, 3);      # wyświetli: 1 2 3
foo(1, 2, 3, 4);   # wyświetli: 1 2 3 4
foo(1, 2, 3, 4, 5);# wyświetli: 1 2 3 4 5
?>

Oprócz tego, kilka kolejny argumentów możemy przekazać za pomocą jednej tablicy - w takim wypadku także korzysta się z operatora ...:

<?php
function bar($a, $b, $c, $d)
{
   echo "$a $b $c $d\n";
}
$argumenty_b_i_c = [4, 8];
bar(1, ...$argumenty_b_i_c, 9); # wyświetli: 1 4 8 9
?>

Zobacz także