Yayında!
PHP 8.0, PHP dili için önemli bir güncellemedir.
Optimizasyonlar ve yeni özellikler: Adlandırılmış Değişkenler, Union Types, Attributes, Kurucularda Özellik Tanımı, Match İfadesi, Nullsafe Operatorü, JIT(Anında Derleme) yanında tip sistemi, hata işleme ve tutarlılıkta iyileştirmeler içerir.

Adlandırılmış Değişkenler RFC

PHP 7
PHP 8
  • Opsiyonel parametreleri atlayabiliyor ve yalnızca zorunlu olanları belirtebiliyorsunuz.
  • Parametrelerin sırası önemli değil ve kendi kendilerini dokümante ediyorlar.

Attributes RFC Doc

PHP 7
PHP 8

PHPDoc yorum satırları yerine PHP sözdizimi ile yapılandırılmış metadata kullanılabiliyor.

Kurucularda Özellik Tanımı RFC Doc

PHP 7
x = $x; $this->y = $y; $this->z = $z; } }', );?>
PHP 8

Sınıfların özelliklerini tanımlamak için daha az kodlama yapılabiliyor.

Union types RFC Doc

PHP 7
number = $number; } } new Number(\'NaN\'); // Ok', );?>
PHP 8

Değişken türlerinin kombinasyonu için PHPDoc açıklamaları yerine çalışma zamanında doğrulanan birleşim türleri (union types) tanımlamaları kullanılabiliyor.

Match İfadesi RFC Doc

PHP 7
Oh no!', );?>
PHP 8
"Oh no!", 8.0 => "This is what I expected", }; //> This is what I expected', );?>

Yeni match ifadesi switch'e çok benzer ve aşağıdaki özelliklere sahiptir:

  • Match bir ifadedir, sonucu bir değişkende saklanabilir veya döndürülebilir.
  • Match'in karşılıkları tek satır ifadeleri destekler ve break; kullanılması gerekmez.
  • Match katı (strict) tip karşılaştırma yapar.

Nullsafe Operatorü RFC

PHP 7
user; if ($user !== null) { $address = $user->getAddress(); if ($address !== null) { $country = $address->country; } } }', );?>
PHP 8
user?->getAddress()?->country;', );?>

Null koşulları için kontroller yazmak yerine yeni Nullsafe operatörüyle çağrı zinciri oluşturabilirsiniz. Oluşturduğunuz zincirdeki herhangi bir parça hatalı değerlendirilirse tüm zincirin işlevi durur ve null olarak değerlendirilir.

Daha Akıllı String ve Sayı Karşılaştırmaları RFC

PHP 7
PHP 8

Sayısal string karşılaştırılırken PHP 8 sayısal olarak karşılaştırır. Aksi halde sayı bir string'e çevrilir ve string olarak karşılaştırılır.

Dahili İşlevler için Tutarlı Hata Türleri RFC

PHP 7
PHP 8

Artık dahili işlevlere gönderilen parametreler doğrulanamazsa Error exception fırlatıyorlar.

Just-In-Time Derlemesi (JIT)

PHP 8, iki JIT derleme motoru sunuyor. Tracing JIT, ikisi arasında en yetenekli olanı. Karşılaştırmalarda yaklaşık 3 kat daha iyi performans ve uzun süre işlem yapan bazı uygulamalarda 1,5–2 kat iyileşme gösteriyor. Normal uygulamalarda performansı PHP 7.4 ile aynı.

PHP 8 performasına JIT katkısının karşılaştırması

Just-In-Time compilation

Tip sistemi ve hata işlemede iyileştirmeler

  • Aritmetik/bitsel operatörler için daha katı tip denetimi RFC
  • Soyut özellikli metodlar için doğrulama RFC
  • Sihirli metodlar için doğru işaretlemeler RFC
  • Yeniden sınıflandırılan motor hataları RFC
  • Uyumsuz metod işaretleri için fatal error RFC
  • @ operatörü artık önemli hataları susturmuyor
  • Private methodlarda kalıtımlar RFC
  • Mixed tipi RFC
  • Static return tipi RFC
  • Dahili işlevler için tip açıklamaları E-posta konusu
  • Eklentiler için özkaynak türleri(resources) yerine opak nesneler: Curl, Gd, Sockets, OpenSSL, XMLWriter ve XML.

Diğer PHP sözdizimi düzenlemeleri ve iyileştirmeleri

  • Parametre ve closure listelerinin sonunda virgül kullanılabilmesi RFC RFC
  • Değişken atamasına gerek olmayan hataların yakalanabilmesi RFC
  • Değişken sözdizimlerinde iyileştirmeler RFC
  • İsim alanındaki tanımları tek bir belirteç olarak değerlendirme RFC
  • Throw deyimi artık bir ifade (expression) RFC
  • Nesnelerde ::class kullanılabilmesi RFC

Yeni Sınıflar, Arayüzler ve Fonksiyonlar