Własne funkcje

Zapewne spotkałeś się już z funkcjami PHP. Funkcje wykonują określone operacje na podanych parametrach. W PHP można też definiować własne funkcje. Własne funkcje tworzy się po to by nie przepisywać wielokrotnie tego samego kodu czy ułatwić tworzenie bardziej skomplikowanych skryptów. Zaczniemy od podstaw. Oto przykład prostej funkcji:
<?php

function prosta_funkcja()
{
echo 'to jest prosta funkcja';	
}

// to wywoła i wyświetli wynik działania funkcji
prosta_funkcja();
Funkcję deklaruje się za pomocą słowa "function" a następnie podaje się nazwę. Nie można użyć nazwy istniejącej funkcji. W nawiasie można podać parametry przekazywane do funkcji, lecz o tym później. Jak widzicie funkcja ta ma za zadanie wyświetlić tekst "to jest prosta funkcja". Wszystko co jest między nawiasami jest kodem funkcji. By w dowolnym miejscu wywołać tą funkcję - wyświetlić napis należy wywołać funkcję podając jej nazwę. Tak jak podano na przykładzie.
Ta funkcja drukuje napis w miejscu gdzie zostanie wywołana. Jeżeli chcielibyśmy przypisać wynik jej działania (a zazwyczaj tego chcemy) musimy użyć dyrektywy return:
<?php

function prosta_funkcja()
{
return 'to jest prosta funkcja';	
}

// to wywoła i wyświetli wynik działania funkcji
$x = prosta_funkcja();
echo '<hr />';
echo $x;
W tym przypadku wynik działania funkcji da się przypisać zmiennej i pojawi się dopiero wtedy gdy tego sobie zażyczymy.
Teraz wróćmy do wartości jakie możemy przekazywać funkcji. Przy definiowaniu funkcji możemy podać zmienne jakie będą przekazane do niej przy jej wywołaniu:
<?php

function prosta_funkcja2($liczba1, $liczba2)
{
$zmienna = $liczba1 * $liczba2;
return $zmienna;
}

// to wywoła i wyświetli wynik działania funkcji
echo prosta_funkcja2('4', '4');
echo '<br />';
$x = prosta_funkcja2('2', '2');
echo 'wynik działania 2 wywołania to: '.$x;
W tym przykładzie do funkcji przekazywane są 2 zmienne, a dokładniej liczby. Wykonywane są na nich operacje a wynik jest zwracany. Wywołując funkcję w nawiasie podajemy odpowiednie liczby. Pierwsze wywołanie da nam 16, drugie 4.
Oto bardziej praktyczny przykład:
<?php

function bbcode($text)
{
$text = str_replace('[b]', '<B>', $text);
$text = str_replace('[/b]', '</B>', $text);
$text = str_replace('[i]', '<i>', $text);
$text = str_replace('[/i]', '</i>', $text);
$text = str_replace('zero', 'kononowicz', $text);
return $text;
}

$zmienna = 'blablabla [b]blaa[/b] oraz [i]blaaa[/i]';
$zmienna = bbcode($zmienna);
echo $zmienna;
To jest funkcja mini bbcode.

Dostęp do zmiennych w funkcji i poza nią

<?php

$foo = 'cześć, jestem zmienna foo';
function glupia_funkcja()
{
echo 'Powitanie: '.$foo;
}
Czy przy wywołaniu funkcji wyświetli nam się "Powitanie: cześć, jestem zmienna foo"? Otóż nie. Zmienne poza funkcją nie wnikają do niej i na odwrót. Istnieje jednak rozwiązanie - zmienne globalne (z których nie powinniśmy w sumie korzystać):
<?php

$foo = 'cześć, jestem zmienna foo';
function glupia_funkcja()
{
global $foo, $x;
echo 'Powitanie: '.$foo;
$x = 5;
}

glupia_funkcja();
echo $x;
Listę globalnych zmiennych definiujemy w pierwszym wierszu kodu funkcji, czyli po otwarciu nawiasu. Powyższa funkcja ma dostęp do zadeklarowanej wcześniej zmiennej $foo, a my mamy również dostęp poza funkcją do zmiennej $x. Stosowanie zmiennych globalnych nie jest zalecane, gdyż zaciera czytelność i logikę kodu.

Funkcje a optymalizacja

Duża liczba funkcji zadeklarowanych przez użytkownika spowalnia skrypt, gdyż wszystkie funkcje muszą być "skompilowane". Gdy tworzysz funkcje, twórz je mądrze i oszczędnie:
  • pomyśl czy za pomocą kilku dodatkowych parametrów przesłanych do funkcji nie da się zrobić jednej funkcji z kilku.
  • Nie twórz funkcji "nakładkowych" (które zwracają działanie istniejącej funkcji PHP)
  • Jeżeli używasz dużej ilości funkcji pogrupuj je w plikach i dołączaj (include) tylko te, które są potrzebne w danym skrypcie
RkBlog

Podstawy PHP, 14 July 2008

Comment article
Comment article RkBlog main page Search RSS Contact