30 dniowy kurs PHP – dzień 4 – funkcje


Back-end (php, mysql)

Dziś zajmiemy się funkcjami. Są one lekko podobne do zmiennych, mają jednak o wiele większe możliwości. W funkcji możesz umieszczać złożone skrypty, które następnie w dowolnym miejscu będziesz mógł szybko wywołać.

Przejdźmy od razu do przykładu.

<?php

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

funkcja(); //wyświetli to jest funkcja

?>

Dobrym nawykiem jest jednak nie stosowanie echo wewnątrz funkcji. Zamiast tego powinniśmy użyć komendy return. Pamiętaj jednak, że komenda return wewnątrz funkcji kończy jednocześnie jej działanie i zwraca wynik. Aby jednak wyświetlić wynik funkcji musimy użyć komendy echo. Zobacz jak to wygląda w praktyce:

<?php

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

funkcja(); //nic nie zostanie wyświetlone
echo funkcja(); //wyświetli to jest funkcja

?>

Po co więc stosować return zamiast echo, skoro później łatwiej wpisać samą nazwę funkcji niż echo funkcja aby została ona wyświetlona? Używanie return zamiast echo wewnątrz funkcji ma swoje uzasadnienie w elastyczności. Co to dokładnie znaczy? Jeśli będziesz chciał wyświetlić funkcję oraz inny dodatkowy tekst funkcja return staje się wyraźnie uzasadniona:

<?php

function funkcja1()
{
	echo 'to jest funkcja 1';
}

function funkcja2()
{
	return 'to jest funkcja 2';
}

echo 'tekst przed, ' . funkcja1(); //wyświetli to jest funkcja 1tekst przed,
echo '<br/>';
echo 'tekst przed, ' . funkcja2(); //wyświetli tekst przed, to jest funkcja 2

?>

W przykładzie funkcja1 przy próbie połączenia jej z innym tekstem zostaje wyświetlona na początku. Natomiast użycie return zamiast echo w funkcja2 umożliwia poprawne jej wyświetlenie w połączeniu z dodatkowym tekstem.

Zmienne jako parametry funkcji

Pora na bardziej zaawansowane możliwości jakie dają funkcje. Zauważ że po wpisaniu dowolnej nazwy, którą nazywamy nowo utworzoną funkcję (pamiętaj aby nie zaczynać nazwy liczbami, znakami specjalnymi, najlepiej unikać też polskich znaków) wpisujemy otwarty i zamknięty nawias. I właśnie pomiędzy tymi nawiasami możesz umieścić dodatkowe parametry w postaci zmiennych.

<?php

function mnozenie($liczba1, $liczba2)
{
	return $liczba1 * $liczba2;
}

echo mnozenie(2, 4); //wyświetli 8

echo $liczba1; //błąd Notice: Undefined variable...

?>

Zauważ jedną bardzo istotną rzecz. Zmienne które użyliśmy jako parametry funkcji nie są dostępne poza funkcją. Echo $liczba1 zwraca błąd – niezdefiniowana zmienna. Teoretycznie używając funkcji mnozenie(2, 4) przypisaliśmy 2 do zmiennej $liczba1 i 4 do zmiennej $liczba2. Ale jak już wspomniałem te zmienne są przypisywane dynamicznie przy wywołaniu funkcji, a poza funkcją zmienna $liczba1 i $liczba2 są wciąż „wolne”.