Zrób sobie prezent! Naucz się programować     |       -40% przy zakupach za min. 79 zł     |      Jeszcze przez:

4 dni 08 godzin
close
Cart icon
User menu icon
User icon
Skontaktuj się z nami:
+48 888-916-333
Lightbulb icon
Jak to działa?
FAQ icon
FAQ
Contact icon
Kontakt
Terms of service icon
Regulamin zakupów
Privacy policy icon
Polityka prywatności
Zdjęcie główne artykułu.

PHP - techniki pracy z funkcjami

Funkcje są istotną częścią większości języków programowania. W tym artykule poznasz kluczowe techniki pracy z funkcjami w języku PHP. Zaczniemy od podstaw i potem przejdziemy do kilku praktycznych technik pracy.

PHP Developer

Zdobądź umiejętności niezbędne do pracy jako PHP Developer. Ta ścieżka kariery sprawi, że staniesz się pełnoprawnym kandydatem na PHP Developera. Ścieżka zawiera dziesiątki zadań, ćwiczeń oraz projektów, które nauczą cię realnych, przydatnych na rynku pracy umiejętności. Dowiedz się więcej

Parametry funkcji

Przypomnijmy sobie jak działają funkcje w PHP. Od razu przejdźmy do przykładu:


function sum($a, $b) {
   echo $a + $b;
}


  • Tutaj zdefiniowaliśmy funkcję sum(), która przyjmuje dwa parametry: $a oraz $b. Zauważ, że te parametry to po prostu zmienne, które są częścią tej funkcji.
  • Funkcja za pomocą echo wyprowadza do przeglądarki sumę $a + $b.

Teraz kluczowa rzecz:


sum(2, 3)


Podczas wywołania funkcji musisz podać wartości dla $a i $b. W tym przykładzie otrzymamy wynik (sumę) równy 5.


5


Funkcja zwracająca wartość

Funkcja zwracająca wartość

Większość funkcji w PHP zwraca jakąś wartość. Dzięki temu możemy z wynikiem zrobić coś więcej niż tylko wyprowadzić go do przeglądarki. Na przykład możemy go użyć w dowolnej części programu, w dowolnym celu.


function multiply($a, $b) {
   return $a * $b;
}


Tutaj mamy funkcję multiply(), która mnoży wartość parametru $a oraz $b. Posiada ona deklarację return, która określa co będzie wartością zwracaną przez funkcję. Ta wartość to będzie po prostu wynik mnożenia.

Teraz możesz przypisać do jakiejś zmiennej wynik działania funkcji, czyli to co funkcja zwróci:


$result = multiply(2, 4);


Od tego momentu zmienna $result przechowuje wynik mnożenia zwrócony przez funkcję multiply().

Argumenty (parametry) domniemane

Czasami chcielibyśmy tworzyć domyślne parametry dla funkcji. Pominięcie niektórych parametrów może być w niektórych sytuacjach pożądane. Spójrz na poniższe rozwiązanie:


<?php

function printLine($size, $sign) {
    for($i = $size; $i > 0; $i--) {
        echo $sign;
    }
    
    echo "\n";
}

printLine(5, '*');
printLine(4, '*');
printLine(3, '*');

?>


Wynik działania programu:


*****
****
***


Można zoptymalizować to zadanie. Zwróć uwagę, że niepotrzebnie wiele razy wywołujemy funkcje z parametrem * (gwiazdka). Można wprowadzić domyślny parametr w funkcji w taki sposób:


<?php

function printLine($size, $sign = '*') {
    for($i = $size; $i > 0; $i--) {
        echo $sign;
    }
    
    echo "\n";
}

printLine(5);
printLine(4);
printLine(3);

?>


Efekt działania programu jest identyczny jak we wcześniej zaprezentowanym przykładzie. Spójrz jak przy małym nakładzie pracy można zaoszczędzić wiele miejsca.


*****
****
***


Jeżeli nie podasz drugiego parametru w wywołaniu funkcji printLine wówczas wartość parametru $sign przyjmie wartość domyślną przypisaną do tego parametru czyli ‘*’.

Kiedy zaczniesz bawić się argumentami domyślnymi w funkcjach musisz mieć na uwadze kilka aspektów:

Jeżeli w deklaracji funkcji podamy domyślną wartość dla argumentu to musimy ją podać dla wszystkich kolejnych argumentów na liście:


<?php

// nieprawidłowe deklaracje
function printLine1($a, $b = 1, $c) { }

function printLine2($a = 1, $b, $c) { }
//prawidłowe deklaracje

function printLine3($a, $b, $c = 2) { }

function printLine4($a, $b = 1, $c = 2) { }

?>


Jeżeli w funkcji znajduje się wiele parametrów domniemanych to opuszczając jeden z nich musisz opuścić kolejne:


<?php

function printLine($a, $b = 100, $c = 200, $d = 300) { }
//prawidłowe deklaracje

printLine(10);
printLine(10, 1);
printLine(10, 1, 2);
printLine(10, 1, 2, 3);

// nieprawidłowe deklaracje
printLine(10, , 2);
printLine(10, , , 3);

?>


Nie możesz opuszczać parametrów. Jeśli zdecydujesz się pominąć jeden argument domyślny, wówczas musisz pominąć kolejne parametry zdając się na ich wartości domyślne.

PHP Developer: Skuteczne projektowanie witryn, programowanie w PHP

Zdobądź umiejętności niezbędne do pracy jako PHP Developer.

Dowiedz się więcej

Przekazywanie parametrów przez wartość / referencję

Przekazywanie przez wartość

Poniższy przykład obrazuje w jaki sposób możesz przesłać parametr przez wartość do funkcji:


<?php

function showValue($digit) {
    $digit = 14;
    echo "Zmienna w funkcji: $digit \n";
}

$digit = 17;
echo "Zmienna przed wywołaniem funkcji: $digit \n";
showValue($digit);
echo "Zmienna po wywołaniu funkcji: $digit \n";

?>


Jak myślisz, jaki będzie efekt działania Naszego programu? Oto wynik:


Zmienna przed wywołaniem funkcji: 17 
Zmienna w funkcji: 14 
Zmienna po wywołaniu funkcji: 17


Zmieniamy wartość zmiennej w funkcji, ale w końcowym rozrachunku i tak jej wartość wynosi 17. Dzieje się tak dlatego, że parametr w funkcji jest tak naprawdę kopiowany i jego życie trwa tak długo, jak długo trwa funkcja. Zmienna ginie wraz z końcem bloku funkcji.

Przekazywanie przez referencję

Dodajmy teraz troszkę czaru programistycznego zawierającego niewielką szczyptę zmian. Naprawdę zmieni się bardzo niewiele, a zobaczysz jakie ogromne konsekwencje niesie za sobą przekazywanie parametrów przez referencję.


<?php

function showValue(&$digit) {
    $digit = 14;
    echo "Zmienna w funkcji: $digit \n";
}

$digit = 17;
echo "Zmienna przed wywołaniem funkcji: $digit \n";
showValue($digit);
echo "Zmienna po wywołaniu funkcji: $digit \n";

?>


Wynik działania naszego programu będzie całkiem odmienny:


Zmienna przed wywołaniem funkcji: 17 
Zmienna w funkcji: 14 
Zmienna po wywołaniu funkcji: 14


Program sam w sobie nie uległ zmianie. Zmienił się jedynie sposób przekazania parametru do funkcji. Zwróć uwagę, że przed parametrem znajduje się znak specjalny &. To właśnie ten znak spowoduje, że nasz parametr nie zostanie skopiowany tylko przekażemy do naszej funkcji oryginał. Dokonując zmian w funkcji powodujesz, że oryginał ulegnie zmianie. Stąd taki wynik, a nie inny.

Zmienna liczba argumentów

Czasami może zdarzyć się sytuacja, że nie będziesz mieć pewności ile możesz przesłać argumentów do funkcji. Z pomocą przyjdzie nam tzw. splat operator.

Splat operator rozpoznasz po charakterystycznych “...” występujących przed nazwą parametru funkcji. Taki operator umożliwia nam przesłanie dowolnej liczby argumentów. Pamiętaj, że taki splat operator może być używany tylko przez ostatni parametr funkcji.


<?php

function printData(...$values) {
    foreach($values as $value) {
        echo "$value \n";
    }
}

printData(1,2);
printData("Tom", "John", "Mike");

?>


Spójrz na parametr funkcji printData(). Taka dziwna konstrukcja to właśnie tzw. splat operator. Dzięki takiemu specyficznemu operatorowi możemy przekazywać do funkcji bliżej nieokreśloną ilość parametrów (inaczej mówiąc: dowolną).

A tak wygląda efekt działania programu:


1 
2 
Tom 
John 
Mike


Deklaracja takiego parametru musi być ściśle określona. Teraz przedstawimy poprawną i błędną deklarację.

Błędne użycie operatora splat:


<?php 

function printData(...$values, $digit) { } 

?>


Poprawne użycie operatora splat:


<?php

function printData(...$values) { }

function printData($digit, ...$values) { }

?>


Argument (parametr) przyjmujący dowolną ilość wartości musi być umieszczony na końcu listy parametrów funkcji. Dotyczy to sytuacji, gdy funkcja przyjmuje więcej niż jeden parametr.

PHP Developer

Zdobądź umiejętności niezbędne do pracy jako PHP Developer. Ta ścieżka kariery sprawi, że staniesz się pełnoprawnym kandydatem na PHP Developera. Ścieżka zawiera dziesiątki zadań, ćwiczeń oraz projektów, które nauczą cię realnych, przydatnych na rynku pracy umiejętności. Dowiedz się więcej

Podsumowanie

Funkcje to bardzo istotna część programowania w PHP. Dzięki nim możemy wielokrotnie wykorzystać ten sam blok kodu. W artykule pokazaliśmy kluczowe techniki pracy z funkcjami.

Jeśli chcesz dowiedzieć się więcej na temat funkcji, i nie tylko to rozpocznij Ścieżkę Kariery PHP Developer. Z tą ścieżką poznasz język PHP od podstaw do poziomu średniozaawansowanego. Ścieżka kończy się Egzaminem, który uprawnia cię do posługiwania się Certyfikatem Specjalisty.