Fonksiyon tanımlamaları, parametre türleri, döndürme değeri, anonim fonksiyon ve kapatma.
Fonksiyonlar tekrar kullanılabilen kod bloklarıdır. DRY (Don't Repeat Yourself) prensibinin temelidir.
PHP 7 ile fonksiyon parametrelerine ve döndürme değerine tip eklenebilir. Bu sayede hatalar erken yakalanır.
Değişkene atanabilen, parametre olarak geçilebilen fonksiyonlardır. Callback, array_map ve olay işleyiciler için kullanılır.
<?php
// ── Temel Fonksiyon ──
function topla($a, $b) {
return $a + $b;
}
echo topla(3, 5); // 8
// ── Varsayılan Parametre ──
function selamla($ad, $hitap = "Sayın") {
return "$hitap $ad, hoş geldiniz!";
}
echo selamla("Furkan"); // Sayın Furkan, hoş geldiniz!
echo selamla("Furkan", "Merhaba"); // Merhaba Furkan, hoş geldiniz!
// ── Tip Bildirimi (PHP 7+) ──
function bol(float $a, float $b): float {
if ($b === 0.0) {
throw new InvalidArgumentException("Sıfıra bölünemez!");
}
return $a / $b;
}
// Nullable tip
function kullaniciBul(int $id): ?array { // null veya array döner
// DB'den bul
return null;
}
// ── Değişken Sayıda Parametre ──
function toplam(...$sayilar): int {
return array_sum($sayilar);
}
echo toplam(1, 2, 3, 4, 5); // 15
// ── Referans ile Parametre ──
function arttir(int &$sayi): void {
$sayi++;
}
$x = 5;
arttir($x);
echo $x; // 6
// ── global Değişken ──
$site_adi = "KodLab";
function getSiteAdi(): string {
global $site_adi; // dışarıdan al
return $site_adi;
}
// ── Anonim Fonksiyon ──
$kare = function(int $n): int {
return $n * $n;
};
echo $kare(4); // 16
// ── use ile Dış Değişkeni Yakala ──
$carpan = 3;
$carpma = function(int $n) use ($carpan): int {
return $n * $carpan;
};
echo $carpma(5); // 15
// ── Arrow Function (PHP 7.4+) ──
$carpma2 = fn($n) => $n * $carpan; // use gerektirmez, otomatik yakalar
// ── Callback Kullanımı ──
$sayilar = [1, 2, 3, 4, 5, 6];
$ciftler = array_filter($sayilar, fn($n) => $n % 2 === 0);
$kareler = array_map(fn($n) => $n ** 2, $sayilar);
$toplam = array_reduce($sayilar, fn($t, $n) => $t + $n, 0);
// ── Özyinelemeli Fonksiyon ──
function faktoriyel(int $n): int {
if ($n <= 1) return 1;
return $n * faktoriyel($n - 1);
}
echo faktoriyel(5); // 120
// ── Fonksiyon Varlığını Kontrol ──
if (function_exists('topla')) {
echo topla(2, 3);
}
?>