1. Birleşik Tip (Union Type) Nedir?
PHP 8 ile birlikte gelen Union Types, bir değişkenin, parametrenin veya fonksiyonun dönüş değerinin birden fazla veri türünü (type) kabul edebilmesini sağlar.Yani bir fonksiyonun sadece tek türde değil, birden fazla türde veriyle çalışabilmesini mümkün kılar.
Örnek:
Kod:
function topla(int|float $a, int|float $b): int|float {
return $a + $b;
}
Yukarıdaki örnekte fonksiyon hem int hem de float türlerini kabul eder ve aynı türlerde bir sonuç döndürür.
2. PHP 8 Öncesi Durum
PHP 8’den önce aynı işlevi elde etmek için tür kontrolleri manuel yapılırdı:Kod:
function topla($a, $b) {
if (!is_int($a) && !is_float($a)) {
throw new InvalidArgumentException('Sayı giriniz.');
}
if (!is_int($b) && !is_float($b)) {
throw new InvalidArgumentException('Sayı giriniz.');
}
return $a + $b;
}
Bu yöntem hem daha uzun hem de hata yapmaya daha açıktı.
3. Temel Kullanım Biçimi
Birleşik tipler, dikey çizgi (|) sembolüyle tanımlanır.Sözdizimi:
function fonksiyonAdi(Tip1|Tip2|Tip3 $parametre): Tip1|Tip2 {}
Örnek:
Kod:
function degerGetir(int|string $id): string {
return "ID: $id";
}
echo degerGetir(42); // "ID: 42"
echo degerGetir("abc123"); // "ID: abc123"
4. Geçerli ve Geçersiz Kullanımlar
✅ Geçerli:function islem(int|float $deger) { /* ... */ }
function getData(array|object $veri) { /* ... */ }
❌ Geçersiz:
function hata(?int|null $id) {} // Hatalı - null zaten ?int içinde var
function ornek(void|int $x) {} // Hatalı - void birleşimlerde kullanılamaz
Not:
?int ifadesi aslında int|null’ün kısa yazımıdır.
Dolayısıyla int|null yerine ?int yazmak mümkündür, ama tersi geçerli değildir.
5. Dönüş Tiplerinde Kullanım
Birleşik tipler sadece parametrelerde değil, dönüş türlerinde de kullanılabilir:Kod:
function hesapla(float $a, float $b): int|float {
$sonuc = $a * $b;
return $sonuc < 1 ? (int)$sonuc : $sonuc;
}
Bu fonksiyon bazen int, bazen float döndürebilir.
6. Kullanım Alanları
Birleşik tipler özellikle şu durumlarda çok faydalıdır:
| Kullanım Alanı | Açıklama | Örnek |
|---|---|---|
| API Geliştirme | API fonksiyonları bazen sayı bazen string döndürebilir. | `int |
| Eski Kodlarla Uyum | Eski sistemlerde farklı türde veri gelebilir. | `array |
| Genel Yardımcı Fonksiyonlar | Tür esnekliği gereken durumlar. | `int |
| Nullable Değerler | Değer olmayabilir (null). | `int |


