3 Eylül’de test için duyurulan PHP 8 ile ilgili yenilikleri deneyebilir ve diğer testleri yapabilirsiniz. Bunun yanında eklenen yeni özelliklere hızlıca göz atmak isterseniz PHP'nin kendi web sitesi üzerinden de bakabilirsiniz. 


str_contains fonksiyonu

Uzun zamandır uygulanan strpos() ve strstr () fonksiyonları var olsa da birçok kullanıcı projesinde bunu str_contains() ismi ile kullandığı için bu duruma özel bir fonksiyon olarak güncellemeye eklenmiştir. Ancak eklenilen bu yeni özellik büyük ve küçük harf duyarlılığına sahip olduğu için case-intensity özelliği bulunmamaktadır. Bu özelliğin gelecekte eklenebileceği belirtilmiştir.


Dizilerin Negatif Değerle Başlaması

Gelen yeni özelliklerde dizilerin negatif değerle başlaması halinde ona göre artarak devam etmektedir. 


Çoklu Tür Kullanımı (Union Types)

Daha öncesinde de gündeme gelen bu özellik  PHP 8.0.0 versiyonunda eklenmiştir. Bu özellik ile tür belirtilen yerlerde çoklu tür de belirtilebilmektedir. 


str_stars-with ve stre_ends_with fonksiyonları

Bu fonksiyon belirlediğiniz değerlerle başlayan ya da bitenleri kontrol etmek için eklenmiştir. Daha önceleri kendileri php framework olarak sunuluyordu. Daha sonrasında da PHP 8’e eklenmiş oldu. Yeni gelen bu özellikte de büyük küçük harf duyarlılığı bulunmaktadır.


Nullsafe (?-<) Operatörü

Adından da belli olduğu üzere null değeri kontrol edip ona göre işlem yapan operatör olmaktadır. Sürekli olarak “if” yazılıp null check yapılmak yerine soru işareti operatörünü yeterli kılmaktadır. 


Adlandırılmış Parametreler

Normal şartlarda bir fonksiyonu ya da metodu çağırırken parametre sırasında göre yazılması gerekiyordu. Yeni gelen özellik ile birlikte ise parametre adını kullanarak diğerleri es geçilebiliniyor.


JIT (Just In Time)

PHP 8 sürümünde en dikkat çeken ve merak uyandıran JIT, makine diline derlenerek yorumlanmaya başlanmıştır. Bu yeniliğin getirilmesinde ki sebep ise run time yorumlanmaya bağlı kalındığı sürece daha fazla performans iyileştirmesinin yapılamayacağı olarak belirtilmiştir. Bu özellik opsiyonel olarak opcache üzerinden aktif edilebilir ya da kapatılabilir. 


Attributes

Ekosistem için sıradan bir özellik olmasına rağmen PHP için yeni bir özellik olmaktadır. Java’da Annotation ve Python’da ise Decorators olarak bilinen bu özellikleri PHP’de ise Attributes olarak isimlendirilmiştir. 


Constructor Property Promotion

PHP 7’de constructor’da objeye değer katabilmek için yapılması gerekenler sırasıyla property olarak tanımlama, constructor parametresi olarak tanımlamak ve constructor içerisinde alınan parametreyi property’ye tanımlamak bulunuyordu.

Artık bu özelliği kullanmak için çok daha kısa adımlar söz konusu olmaktadır. Bu özelliği kullanmanız için Constructor’a argüman belirtmek yeterli olmaktadır. 


Union Types

PHP 7 ile birlikte kullanılmaya başlanan type declaration / type safety gelen güncelleme ile birlikte bir parametrenin veya dönüşün türünün birden fazla türe sahip olabilmesini sağlamaktadır. Daha önceki versiyonunda hem integer hem de null olabilecek noktalarda int gibi tanımlamalar kullanılmaktaydı. Şimdi ise hem Integer hem de float olabilir gibi bir tanım yapabiliyoruz. 

Bunların yanında mixed type da bulunmaktadır. Legacy projelerinde birçok dönüş tipi bulunan kodları refactor ederken kullanılmaktadır. 

Diğer bir yandan bu yeni özellik karmaşıklığa yol açabilmektedir. Hem type safety olma yolunda ilerlerken hem de mixed gibi bir türün implemente edilmesi ilginç bir özellik olmuştur.