ana_sayfa / php / fonksiyonlar-ve-kapsam
🐘 PHP 📊 Orta ⏱ 25 dk 📋 1 Kod Örneği

Fonksiyonlar ve Kapsam

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.

Tip Bildirimi (Type Declaration)

PHP 7 ile fonksiyon parametrelerine ve döndürme değerine tip eklenebilir. Bu sayede hatalar erken yakalanır.

Anonim Fonksiyon ve Arrow Function

Değişkene atanabilen, parametre olarak geçilebilen fonksiyonlardır. Callback, array_map ve olay işleyiciler için kullanılır.

PHP Fonksiyon Türleri
<?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);
}
?>
← Önceki Ders
Diziler
Sonraki Ders →
OOP — Nesne Yönelimli Programlama