PHP geliştiriyorsan 8.4 sürümüyle birlikte gelen yenilikler seni hem performans hem yazım kolaylığı açısından mutlu edecek. Bu sürüm “devrimsel değil ama hayat kurtaran” türden geliştirmelerle geldi. İşte herkesin konuştuğu özellikler ve örneklerle açıklamaları:
PHP 8.4’ün en dikkat çeken özelliği property hooks dediğimiz, getter-setter rahatlığını sınıf özelliklerine gömmemize izin veren yapı. Eskiden ayrı metotlarla uğraştığımız şeyleri artık direkt özellik üzerinde tanımlayabiliyoruz. Örneğin:
1 2 3 4 5 6 7 8 9 10 11 12 | class Kullanici { private string $isim { get => $this->isim; set => $this->isim = trim($value); } } $k = new Kullanici(); $k->isim = " Ali "; echo $k->isim; // "Ali" |
Kod daha okunabilir, kontrol daha kolay. Yapı büyük projelerde bile temiz kod avantajı sağlıyor.
Bir diğer dikkat çeken konu ise readonly özelliklerde esneklik. PHP 8.2’de tanıştığımız readonly yapısı artık biraz daha oynanabilir hale geldi. Özellikle __construct
içinde yapılan düzenlemeler daha akıcı:
1 2 3 4 5 6 7 8 9 10 11 | class Urun { public readonly string $ad; public function __construct(string $ad) { $this->ad = strtoupper($ad); } } $urun = new Urun("telefon"); echo $urun->ad; // TELEFON |
“Performans tarafında ne var?” diye soruyorsan, PHP 8.4 bunu sessizce hallediyor. JIT ve OPcache tarafındaki geliştirmeler sayesinde fonksiyon çağrıları ve hafıza kullanımı daha verimli hale geldi. Yani kod yazımında hiçbir şey değiştirmesen bile sitende hız artışı görebilirsin.
PHP 8.1’le hayatımıza giren Fiber yapısı da 8.4’te olgunlaştı. Asenkron işlemler artık daha kararlı ve hızlı. Mesela:
1 2 3 4 5 6 7 | $fiber = new Fiber(function () { return "İşlem tamam!"; }); echo $fiber->start(); // İşlem tamam! |
Gelelim biraz “dikkat et” tarafına. Bazı eski alışkanlıklar artık uyarı veriyor. Özellikle sınıflarda dinamik özellik tanımlamak neredeyse tarihe karışıyor:
1 2 3 4 5 6 7 | class Deneme { public function test() { $this->yeniOzellik = "selam"; // Uyarı: Dynamic property deprecated } } |
Kısacası, propertileri önceden tanımlamak şart oldu.
Enum yapıları da sessiz sedasız güçlenen özelliklerden biri. Type güvenliği, hata kontrolü ve okunabilirlik iyileştirmeleriyle modern projelerde daha sık kullanılır hale geldi:
1 2 3 4 5 6 7 8 9 10 11 12 | enum Durum: string { case AKTIF = 'aktif'; case PASIF = 'pasif'; } function yazdir(Durum $durum) { echo $durum->value; } yazdir(Durum::AKTIF); // aktif |
Bir de attribute tarafında pratiklik arttı. Framework’lerle birlikte çalışırken daha temiz bir söz dizimi sunuyor:
1 2 3 4 5 6 | #[Route('/anasayfa', methods: ['GET'])] function anasayfa() { return "Merhaba"; } |
Toparlarsak: PHP 7 kullanıyorsan geçiş vakti kesinleşti. PHP 8.2 ya da 8.3 üzerindeysen 8.4’e yükseltmek hem kolay hem mantıklı. Hem performans artışı sağlıyorsun hem de modern yazım imkanlarını kaçırmamış oluyorsun.