PHP 8 ile Gelen Yenilikler

  • PHP

PHP 8.0 ile gelen bazı yeni özellikler olduğu gibi bazı güncellemeler de var. Yeni özelliklerin en başındaysa JIT özelliği geliyor. JIT temel anlamda çevrilen bytecode sisteminin arasına Asembly ekliyor yani kod döngüsü PHP -> Bytecode yerine, PHP -> Bytecode -> Assembly olacak. Aslında baktığınızda okunma alanı uzamış gözüküyor ancak işlevsel düşünürsek işler biraz değişiyor. Normalde PHP kodu Bytecode’a çevrilerek PHP motorunun yorumlayacağı şekle geliyor ama bu döngü sürekli tekrarlanıyor. PHP kodu Bytcecode’a çevrilip ardından da işlemcinin anlayacağı dil olan Assembly’e çevrilince işlem süresi ciddi derecede azalıyor çünkü kaynak kodu tekrar okumasına gerek kalmıyor. Açıklamayı uzatmak yerine aradaki farkı daha kolay anlayabileceğiniz geliştiricinin videosuyla sizi baş başa bırakayım.

PHP 8 ile Eklenen JIT Özelliği:

Ayrıca kullanışlılığı ve true/false çıktısı değişen işlemlerde olacak;

  • Switch case koduna alternatif olarak match kodu eklendi. Aşağıda gördüğünüz 2 kod aynı çıktıyı verecek:
switch(2){
 case 1:
  $result = "1";
  break;
 case 2:
  $result = "2";
  break;
 case 3:
  $result = "3";
  break;
 default:
  $result = "0";
  break;
}
$result = match(2){
 1 => "1",
 2 => "2",
 3 => "3",
 default => "0"
};
  • Üçlü karşılaştırma operatörüne parantez zorunluluğu getirilecek:
    Şuanda $sonuc = ifade ? deger1 : deger2 ? deger3 : deger4; olarak kullanılan yapı PHP 8.0 ile daha kolay okunabilmesi için parantezle kullanılması gerekecek. Örneğin $sonuc = ifade = deger1 : (deger2 ? deger3 : deger4); şeklinde.
  • Artı ve eksi operatör öncelikleri değişecek:
    Şuanda $sonuc = '3' . '5' + 7; işlemini yaptığınızda 35 + 7 işleminden 42 sonucunu alırken PHP 8.0 ile bu işlem artık '3' . '12' işleminden 312 sonucunu verecek. (Bilmeyenler için nokta (.) operatörü birleştirme operatörüdür) Yani toplama ve çıkarma işlemleri de soldan sağa okumaya dahil edilmek yerine diğer operatörler gibi öncelikli olacak.
  • Diziler ( Array ) artık negatif değerlerden başlayabilecek. Örneğin $array[-4] = '-4. dizi değeri'; şeklinde kullanılabilecek.
  • strpos metoduna alternatif str_contains metodu eklenecek. Şuanda strpos metoduyla metnin içince aradığımız değer var mı diye baktığımızda yoksa false, varsa int değeri döndürüyor. PHP 8.0 ile gelen str_contains metodu sayesinde daha doğru sonuçlar alacağız çünkü bu metot boolean sonuç döndürecek.

Bu listede hem yanlış bilgi vermemek hem de çok uzun tutmamak için sadece kendi bilgim olan işlemler için gelen yeniliklerden bahsettim. Tüm yenilikleri takip etmek isterseniz PHP’nin kendi sitesindeki güncellemeler bölümünü takip edebilirsiniz. Bu sayede tüm sürümlerdeki gelen yenilikler hakkında kesin bilgiye ulaşabilirsiniz.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir