İçeriğe geç
Muhammet Şafak
Diller 3 dk okuma

PHP 8.5 yolda: dilin olgunlaşan yüzü

PHP 8.5 henüz çıkmadı; ama gündemde olan önerilere bakarak on yılı aşkın bir dilin nasıl evrildiğini okuyorum.


PHP 8.5 henüz yayımlanmadı; bu yazıyı Ağustos 2025’te yazıyorum ve sürüm yıl sonuna doğru bekleniyoru. Ama RFC süreçlerini takip edenler için şekillenen tablo oldukça net. PHP’nin bu adımla nereye gittiğini, geride bıraktığı yolda neyi öğrettiğini burada düşünmek istiyorum.

2008’den beri PHP yazıyorum. Bu süreçte dilin geçirdiği dönüşümü içeriden izledim: PHP 5’in OOP devrimiyle başlayıp PHP 7’nin hız atlamasına, PHP 8.0’ın attribute’larına ve match ifadesine, 8.1’in enum’larına ve readonly property’lerine kadar. Her sürüm küçük gibi görünüyor ama birikimi büyük.

8.x serisinin seyri

PHP 8.0 dilin karakter değişiminin başlangıcıydı. Union type, nullsafe operator, match expression ve JIT (Just-In-Time) bir arada gelen büyük bir yenileme paketiydi.

8.1, readonly özellikler ve enum’larla sınıf modellemesini güçlendirdi. Immutable veri yapılarını PHP’de dil düzeyinde yazmak ilk kez bu kadar doğal hale geldi.

8.2, readonly sınıfları ve DNF (Disjunctive Normal Form) türlerini getirdi. 8.3 ise typed class constants ve json_validate() gibi pratik eklemelerle geldi.

8.4’te property hook’ları ve asymmetric visibility öne çıktı. Getter/setter yazma biçimini kökten değiştiren bu özellik, boilerplate kodu azaltırken açıklığı artırıyor.

8.5’te neler şekilleniyor

RFC sürecinde öne çıkan birkaç öneri var. Bunlar kesinleşmedi, ama tartışmanın seyrine bakarak olası görünüyor.

Pipe operatörü (|>) üzerine tartışma. F# ve Elixir’den aşina olunan bu operatör, fonksiyon zincirini soldan sağa okunabilir biçimde yazmanın önünü açıyor. PHP topluluğunun bu konuda hâlâ konsensüse varmadığını görüyorum; dil yüzeyini genişletmek ile sadeliği korumak arasındaki gerilim burada da beliriyor.

Lazy initializer geliştirmeleri. 8.4 ile gelen lazy object desteğinin üzerine inşa edilen yeni öneriler, nesne başlatma maliyetini daha fine-grained kontrol etmeyi mümkün kılabilir.

array_* fonksiyon ailesine eklemeler. PHP’nin array API’si zengin ama bazı yaygın işlemler için hâlâ çok fazla satır gerekiyor. array_find() ve array_find_key() bu boşluğu doldurmak için gündemde.

Dilin olgunluk biçimi

PHP’nin evriminde artık belirgin bir örüntü var: büyük sürprizer değil, tutarlı iyileştirmeler. Bu olgunluğun işareti.

Bir dilin erken döneminde her büyük sürüm paradigma değiştirebilir. Olgun bir dilde bu değişimler daha ince, daha planlı olur. Geriye dönük uyumluluk öncelik kazanır; milyonlarca satır kodu çalışır tutmak, radikal yenilikleri sindirmekten daha önemli hale gelir.

PHP bu dengede dikkatli bir çizgi izliyor. Her sürümde breaking change’ler var ama bunlar önceden duyuruluyor, deprecation süreçleri yönetiliyor. PHP 8.5 ile 8.0’da deprecated edilen işlevlerin kaldırılması bekleniyor — bu temizlik rutini de dilin olgunluğunun bir parçası.

Tip sisteminin derinleşmesi

PHP’nin son birkaç sürümünde en tutarlı yatırım yaptığı alan tip sistemi. Her sürümde tipler daha güçlü, daha ekspresif hale geliyor. Bu yatırımın somut etkisi: statik analiz araçları — özellikle Psalm ve PHPStan — artık PHP kodundaki hataların büyük bölümünü çalıştırmadan önce yakalayabiliyor.

// PHP 8.x'in tip ifade kapasitesi
function processResult(int|string $id): User|null
{
    // ...
}

// readonly ile değişmez modeller
readonly class Money
{
    public function __construct(
        public readonly int $amount,
        public readonly string $currency,
    ) {}
}

Bu kod beş yıl önce PHP’de mümkün değildi. Şimdi hem dil sözdizimi hem de araç desteği açısından yerli yerinde görünüyor.

PHP’nin nereye gittiğini anlamak için 8.5 çıktıktan sonra değerlendirme yapabilirim. Ama şimdiden söyleyebileceğim şu: 2008’de başladığım dil ile bugün yazdığım dil örtüşüyor, ama özellikleri ve araçları bakımından neredeyse tanınmayacak kadar farklı. Bu iyi bir şey.

Etiketler: #PHP
Paylaş:

İlgili Yazılar

Sitede Ara

Yazı, proje ve sayfalarda arama yapmak için yazmaya başlayın.

Esc ile kapat Pagefind ile güçlendirildi