PHP Fonksiyonlar (Functions)

Fonksiyonlar, program içinde tekrar eden işleri küçük parçalara ayırarak (modüler) kullanmamızı sağlar. Parametre (girdi) alabilir, işlem yapar ve istenirse return ile bir değer döndürür.

Püf Noktalar
  • <?php kullan (kısa tag <? bazı sunucularda kapalıdır).
  • Fonksiyon isimleri büyük/küçük harfe duyarsız olsa da (PHP), standart olarak küçük harf + snake_case önerilir.
  • Return fonksiyonu bitirir. Değer döndürmeyeceksen bile return; ile erken çıkış yapabilirsin.
  • Parametreler için varsayılan değer ve tip tanımı (type hint) modern PHP’de çok kullanılır.

Fonksiyon Kullanımı ile İlgili Kurallar

  • Fonksiyon isimleri programcı tarafından belirlenir.
  • Parametreler fonksiyon isminden sonra parantez içinde yazılır.
  • Birden fazla parametre varsa virgül ile ayrılır.
  • Fonksiyon gövdesi { } arasına yazılır.
  • Sonucu dışarı vermek için return kullanılır.
  • Fonksiyonlar yalnızca çağrıldıklarında çalışır.
  • Aynı fonksiyon istenildiği kadar çağrılabilir.
Güncel Not
“Önce çağırıp sonra tanımlama” konusu, PHP’de dosya akışı ve include/require durumuna göre değişir. En güvenlisi: fonksiyonu önce tanımla, sonra çağır.

Fonksiyon Tanımlama Şablonu

Şablon
<?php
function fonksiyon_adi($parametre1, $parametre2) {
    // işlemler
    return $sonuc;
}
?>

Örnek: İki sayıyı çarpan fonksiyon

Aşağıdaki örnekte fonksiyon iki parametre alır, çarpar ve sonucu return ile geri döndürür. (Not: Function/Return büyük yazılabilir ama standart küçük yazılır.)

Örnek: carp()
<?php
function carp($x, $y) {
    $sonuc = $x * $y;
    return $sonuc;
}

echo "İki sayının çarpımı = " . carp(3, 5);
?>
Canlı Çıktı
İki sayının çarpımı = 15

Varsayılan Parametreler (Default Values)

Parametre verilmezse kullanılacak varsayılan değer tanımlanabilir. Varsayılanı olan parametreler genelde sona yazılır.

Örnek: selamla($ad = 'Misafir')
<?php
function selamla($ad = "Misafir") {
    return "Merhaba " . $ad;
}

echo selamla();        // Merhaba Misafir
echo "<br>";
echo selamla("Mehmet"); // Merhaba Mehmet
?>

Tip Tanımı ve Dönüş Tipi (Modern PHP)

Parametre ve dönüş tipi belirlemek hataları azaltır ve kodu daha okunur yapar.

Örnek: int + float dönüş
<?php
function carp_int(int $x, int $y): int {
    return $x * $y;
}

function ortalama(array $sayilar): float {
    if (count($sayilar) === 0) return 0.0;
    return array_sum($sayilar) / count($sayilar);
}

echo carp_int(3, 5);           // 15
echo "<br>";
echo ortalama([10, 20, 30]);   // 20
?>
İpucu
Projede mümkünse en üste şunu eklemek iyi alışkanlık: declare(strict_types=1); (tip dönüşümlerini daha sıkı yapar)

Referans ile Parametre Göndermek (&)

Bazı durumlarda fonksiyonun parametreyi “yerinde” değiştirmesini istersin. Bu durumda referans kullanılabilir. (Dikkatli kullanılmalı.)

Örnek: sayiyi_arttir(&$n)
<?php
function sayiyi_arttir(&$n) {
    $n = $n + 1;
}

$sayi = 10;
sayiyi_arttir($sayi);
echo $sayi; // 11
?>

Değişken Sayıda Parametre (Variadic) ...$args

Çok kullanılan bir pratik: sınırsız sayıda parametre alıp toplamak gibi.

Örnek: topla(...$sayilar)
<?php
function topla(int ...$sayilar): int {
    return array_sum($sayilar);
}

echo topla(1, 2, 3, 4); // 10
?>

Anonim Fonksiyonlar ve Arrow Function

Özellikle array_map, array_filter gibi fonksiyonlarla beraber çok kullanılır.

Örnek: filter + arrow function
<?php
$sayilar = [1,2,3,4,5,6];

// Çiftleri filtrele
$ciftler = array_values(array_filter($sayilar, fn($x) => $x % 2 === 0));

print_r($ciftler); // [2,4,6]
?>

Değişken Kapsamı (Scope) ve global

Fonksiyon içindeki değişkenler varsayılan olarak lokaldir. Dışarıdaki değişkene erişmek istersen parametre ile göndermek en doğrusudur. Mecbur kalırsan global kullanılabilir.

Örnek: global vs parametre
<?php
$katsayi = 2;

function carp_global($x) {
    global $katsayi;
    return $x * $katsayi;
}

function carp_parametre($x, $katsayi) {
    return $x * $katsayi;
}

echo carp_global(10);          // 20
echo "<br>";
echo carp_parametre(10, 3);    // 30
?>
Öneri
Global yerine mümkün olduğunca parametre kullan. Kod test edilebilir ve okunur olur.