PHP

PHP’de Fonksiyon Tanımlama

PHP'de Fonksiyon Tanımlama

Modern web geliştirmede kod tekrarını önlemek, bakım maliyetlerini düşürmek ve okunabilir bir mimari inşa etmek için fonksiyonlar en temel yapı taşıdır. PHP uygulamalarında iş mantığını modüler parçalara ayırmak, yazılımın hem test edilebilirliğini hem de güvenliğini doğrudan artırır. Bir PHP fonksiyon yapısı, belirli bir görevi yerine getirmek üzere tasarlanmış, gerektiğinde parametre alabilen ve geriye bir sonuç döndürebilen bağımsız kod bloklarıdır.

Fonksiyon Nedir ve Neden Kullanılır?

Fonksiyonlar, programlama dünyasında “Kendini Tekrar Etme” (Don’t Repeat Yourself – DRY) prensibini uygulamanın ilk adımıdır. Belirli bir hesaplama, veri doğrulama veya metin biçimlendirme işlemini birden fazla sayfada kullanmanız gerektiğinde, aynı kod satırlarını defalarca yazmak yerine tek bir fonksiyon altında toplarsınız.

PHP uygulamalarında fonksiyon kullanmanın temel faydaları şunlardır:

  • Kod tekrarını ortadan kaldırır ve proje genelinde dosya boyutunu düşürür.
  • Hata yönetimini kolaylaştırır; fonksiyonda yapılan bir düzeltme, fonksiyonun çağrıldığı tüm noktalarda geçerli olur.
  • Kodun okunabilirliğini artırarak takım çalışmasını hızlandırır.
  • İş mantığını parçalara bölerek birim testlerin (unit test) yazılmasını mümkün kılar.

Temel Fonksiyon Tanımlama ve Çağırma

PHP’de bir fonksiyon oluşturmak için function anahtar kelimesi kullanılır. Fonksiyon isimleri harf veya alt çizgi ile başlamalıdır; sayıyla başlayamaz. Ayrıca PHP fonksiyon isimleri büyük-küçük harfe duyarsızdır (case-insensitive), ancak topluluk standartları gereği camelCase biçimi tercih edilir.

function karsilamaMesaji()
{
    echo "Sisteme başarıyla giriş yaptınız.";
}

karsilamaMesaji();

Yukarıdaki örnekte karsilamaMesaji adında bir fonksiyon tanımlanmış ve hemen altında bu fonksiyon çağrılmıştır. Fonksiyon çalıştırıldığında süslü parantezler arasındaki kod yürütülür ve ekrana metin yazdırılır.

Parametre ve Argüman Kullanımı

Fonksiyonların dinamik çıktılar üretebilmesi için dışarıdan veri alması gerekir. Fonksiyon tanımında parantez içine yazılan değişkenlere parametre, fonksiyon çağrılırken bu parametrelere aktarılan gerçek verilere ise argüman denir.

function kullaniciKarsila($kullaniciAdi)
{
    echo "Hoş geldiniz, " . htmlspecialchars($kullaniciAdi) . "!";
}

kullaniciKarsila("Ahmet");

Bu örnekte kullaniciKarsila fonksiyonu tek bir parametre kabul etmektedir. Güvenlik açısından, dışarıdan gelen metinler doğrudan ekrana basılmadan önce htmlspecialchars gibi filtrelerden geçirilmelidir.

Varsayılan Parametre Değeri

Bazı parametrelerin girilmesi zorunlu tutulmayabilir. Bu durumda parametreye varsayılan bir değer atanır. Çağrım sırasında o argüman belirtilmezse, varsayılan değer devreye girer.

function sunucuBaglan($port = 3306)
{
    echo "Veritabanı bağlantısı " . $port . " portu üzerinden kuruluyor.";
}

sunucuBaglan();
sunucuBaglan(3307);

İlk çağrımda hiçbir argüman verilmediği için 3306 kullanılırken, ikinci çağrımda belirtilen 3307 portu dikkate alınır.

Fonksiyonlarda Değer Döndürme (Return)

Fonksiyonlar her zaman ekrana bir çıktı basmak zorunda değildir. Genellikle bir veri üzerinde işlem yapıp sonucunu çağrıldığı yere iletirler. Bu işlem return ifadesiyle gerçekleştirilir.

function kdvHesapla($tutar, $oran = 0.20)
{
    $kdvTutari = $tutar * $oran;
    return $tutar + $kdvTutari;
}

$odenecekTutar = kdvHesapla(1000);
echo "Toplam Tutar: " . $odenecekTutar . " TL";

return anahtar kelimesi çalıştığı anda fonksiyonun yürütülmesi durur ve üretilen değer fonksiyonun çağrıldığı noktaya aktarılır. Bu yöntem, fonksiyonun çıktısını başka hesaplamalarda veya veritabanı sorgularında kullanabilmenize olanak tanır.

Tip Belirleme ve Katı Tipler (Strict Types)

PHP dinamik tipli bir dildir; ancak PHP 7 ile birlikte gelen tip bildirimleri (type hinting) kodun güvenilirliğini ve kararlılığını ciddi ölçüde artırmıştır. Parametrelerin ve dönüş değerlerinin türünü zorunlu kılmak, beklenmedik veri türlerinin sisteme sızmasını engeller.

declare(strict_types=1);

function bolmeIslemi(float $bolunen, float $bolen): float
{
    if ($bolen == 0.0) {
        throw new InvalidArgumentException("Bölen sıfır olamaz.");
    }
    return $bolunen / $bolen;
}

$sonuc = bolmeIslemi(15.0, 3.0);
echo $sonuc;

Dosyanın en başına declare(strict_types=1); yönergesi eklendiğinde, PHP tür dönüşümlerini otomatik olarak yapmayı bırakır. Fonksiyona belirtilen veri tipi dışında bir argüman gönderilirse sistem derleme hatası fırlatır.

Değişken Kapsamı (Variable Scope)

PHP’de fonksiyonların içindeki değişkenler yerel (local) kapsama sahiptir. Yani fonksiyon içinde tanımlanan bir değişken fonksiyon dışından okunamaz. Benzer şekilde, fonksiyonun dışında tanımlanan global bir değişken de özel bir yöntem kullanılmadıkça fonksiyon içinden doğrudan erişilemez.

$ayar = "Aktif";

function durumKontrol()
{
    $yerelDurum = "Hazır";
    echo $yerelDurum;
}

durumKontrol();

Global değişkenlerin fonksiyon içinde kullanılması genellikle önerilmez; çünkü bu durum kodun bağımlılıklarını karmaşıklaştırır. Bunun yerine gereken değerler parametre olarak aktarılmalıdır.

Anonim Fonksiyonlar ve Ok Fonksiyonları

İsmi olmayan ve bir değişkene atanabilen fonksiyonlara anonim fonksiyon (closure) denir. PHP 7.4 ile birlikte daha kısa bir yazım sunan ok fonksiyonları (arrow functions) da dile eklenmiştir.

$carpim = fn(int $a, int $b): int => $a * $b;

echo $carpim(4, 5);

Ok fonksiyonları özellikle dizi işleme fonksiyonlarında (array_map, array_filter) tek satırlık pratik çözümler sunar ve dış kapsamdaki değişkenlere otomatik olarak erişebilir.

Özet ve Sonraki Adımlar

PHP’de fonksiyonlar, yapılandırılmış programlamanın temel aracıdır. Doğru adlandırma standartları, varsayılan parametreler, değer döndürme mekanizması ve katı tip bildirimleri kullanılarak yazılan fonksiyonlar projenin hata payını en aza indirir. Güvenli kod geliştirme yaklaşımında, her fonksiyonun tek bir sorumluluğu üstlenmesi (Single Responsibility Principle) hedeflenmelidir.

Bir sonraki adımda, fonksiyonların sınıflar içinde nasıl metot haline dönüştüğünü incelemek için Nesne Yönelimli Programlama (OOP) kavramlarına ve PHP’de sınıf yapısına göz atabilirsiniz.

#backend#php#php fonksiyon#programlama#yazılım geliştirme

Comentarios

Aún no hay comentarios. Sé el primero en comentar.

Deja un comentario

Los comentarios se publican tras la aprobación del administrador.