<?> PHP NOVA invictum.hr
Izdanje 2026.
Poglavlje 12

Funkcije

Veliki problem dijelimo na male, imenovane operacije s jasnim ulazima i povratnim vrijednostima.

22 min čitanja Početno razina PHP 8.5 ciljna verzija

Nakon ovog poglavlja

Što ćete znati napraviti

  • Deklarirati parametre, tip povrata i zadane vrijednosti.
  • Pisati male funkcije bez skrivenog globalnog stanja.
  • Koristiti anonimne i arrow funkcije za kratke transformacije.

Ime, ulaz, izlaz

Funkcija skriva jedan smislen postupak

Dobro ime opisuje rezultat ili radnju. Parametri su ulaz, return je izlaz. Tipovi služe kao izvršiv ugovor i dokumentacija. Funkcija koja računa ne bi trebala usput ispisivati HTML ili mijenjati globalnu varijablu.

Čista funkcija
<?php

function priceWithTax(int $netCents, float $rate = 0.25): int
{
    $tax = (int) round($netCents * $rate);

    return $netCents + $tax;
}

echo priceWithTax(10000);

Eksplicitni slučajevi

Opcionalno nije isto što i nepoznato

Zadana vrijednost koristi se kada argument nije poslan. Nullable tip poput ?string dopušta string ili null. Ako je null stvaran poslovni slučaj, obradite ga jasno. Previše opcionalnih parametara često pokazuje da funkcija radi više poslova.

Nullable parametar
<?php

function greeting(string $name, ?string $company = null): string
{
    $suffix = $company === null ? '' : " iz tvrtke {$company}";

    return "Pozdrav, {$name}{$suffix}!";
}

Male transformacije

Closure i arrow funkcije

Anonimnu funkciju možemo spremiti u varijablu ili predati drugoj funkciji. Arrow funkcija fn automatski hvata vanjske vrijednosti po vrijednosti i pogodna je za jedan izraz. Za složeniju logiku koristite imenovanu funkciju ili puni closure.

Callback
<?php

$prices = [1200, 2500, 990];
$withTax = array_map(
    fn (int $price): int => priceWithTax($price),
    $prices
);

Primijenite naučeno

Vježba: Formatiranje cijene

Izradite funkciju koja prima iznos u centima i vraća prikaz za hrvatsku lokalizaciju.

  1. Deklarirajte tip parametra i povratni tip.
  2. Provjerite ponašanje za nulu i negativan iznos.
  3. Odvojite računanje od HTML prikaza.

Za provjeru i nastavak

Službeni izvori