PHP 8, Kasım 2020’de yayımlandı ve performans, sözdizimi (syntax) ile dil tutarlılığında büyük iyileştirmeler getirdi.
Bu bölümde PHP 8’in en önemli yenilikleri ve geliştirmeleri yer almaktadır.
JIT derleyicisi, PHP kodunun bazı kısımlarını çalışma anında makine koduna çevirerek performansı artırır.
Önemli noktalar:
CPU yoğun işlemleri (örneğin görüntü işleme, matematiksel hesaplamalar) hızlandırır.
Normal web isteklerinde fark genellikle azdır.
opcache.jit ve opcache.jit_buffer_size ayarlarıyla kontrol edilir.
Örnek:
Kod:
Bir parametrenin veya dönüş değerinin birden fazla türü kabul etmesini sağlar.
Örnek:
Kod:
PHP 8 öncesi:
Bu kontrolleri manuel olarak yapmak gerekiyordu.
Fonksiyonlara parametreleri konumla değil, isimle göndermeyi sağlar.
Örnek:
Kod:
Avantajları:
Kod daha okunaklı olur.
Argüman sırası önemli değildir.
Opsiyonel parametrelerle çok uyumludur.
Sınıflara, metodlara veya özelliklere meta veri (ek bilgi) eklemek için PHP’nin yerleşik sözdizimi.
Örnek:
Kod:
PHP 8 öncesi:
Bu bilgiler PHPDoc yorumları veya harici kütüphanelerle eklenirdi.
Sınıf özelliklerini doğrudan yapıcı (constructor) parametrelerinde tanımlayıp atamayı sağlar.
Örnek:
Kod:
Bu bölümde PHP 8’in en önemli yenilikleri ve geliştirmeleri yer almaktadır.
1. JIT (Just-In-Time) Derleme
Nedir:JIT derleyicisi, PHP kodunun bazı kısımlarını çalışma anında makine koduna çevirerek performansı artırır.
Önemli noktalar:
CPU yoğun işlemleri (örneğin görüntü işleme, matematiksel hesaplamalar) hızlandırır.
Normal web isteklerinde fark genellikle azdır.
opcache.jit ve opcache.jit_buffer_size ayarlarıyla kontrol edilir.
Örnek:
Kod:
; php.ini
opcache.enable=1
opcache.jit=1235
opcache.jit_buffer_size=100M
2. Birleşik Tipler (Union Types)
Nedir:Bir parametrenin veya dönüş değerinin birden fazla türü kabul etmesini sağlar.
Örnek:
Kod:
function hesapla(int|float $deger): int|float {
return $deger * 1.5;
}
PHP 8 öncesi:
Bu kontrolleri manuel olarak yapmak gerekiyordu.
3. İsimlendirilmiş Argümanlar (Named Arguments)
Nedir:Fonksiyonlara parametreleri konumla değil, isimle göndermeyi sağlar.
Örnek:
Kod:
function kullaniciOlustur(string $isim, int $yas, string $rol = 'user') {
// ...
}
kullaniciOlustur(isim: 'Ahmet', yas: 25);
kullaniciOlustur(yas: 40, isim: 'Mehmet', rol: 'admin');
Avantajları:
Kod daha okunaklı olur.
Argüman sırası önemli değildir.
Opsiyonel parametrelerle çok uyumludur.
4. Öznitelikler (Attributes / Annotations)
Nedir:Sınıflara, metodlara veya özelliklere meta veri (ek bilgi) eklemek için PHP’nin yerleşik sözdizimi.
Örnek:
Kod:
#[Route('/users', methods: ['GET'])]
class UserController {
// ...
}
PHP 8 öncesi:
Bu bilgiler PHPDoc yorumları veya harici kütüphanelerle eklenirdi.
5. Yapıcıda Özellik Tanımlama (Constructor Property Promotion)
Nedir:Sınıf özelliklerini doğrudan yapıcı (constructor) parametrelerinde tanımlayıp atamayı sağlar.
Örnek:
Kod:
class Kullanici {
public function __construct(
private string $isim,
private int $yas
) {}
}
$k = new Kullanici('Ali', 30);


