PHP 8 ile gelen bazı yeni özellikler

Melih Sevim
FLO Teknoloji
Published in
4 min readApr 16, 2023

PHP programlama dilinin son sürümü olan PHP 8, PHP diline eklenen birçok yeni özellik ve geliştirmeler birlikte yazılım geliştirme dünyasındaki yerini aldı. eklemiştir. Bu yazımda, PHP 8 ile gelen tüm yeni özellikleri ayrıntılarıyla anlatacağım.

Union Types PHP 8,

Artık birden fazla veri türü tek bir parametre veya dönüş türü olarak kabul edebiliyor. Bu, kodun okunabilirliğini ve güvenliğini arttırıyor

Örneğin, bir fonksiyonun parametresi hem string hem de int olabiliyor.

Named Arguments,

Fonksiyonlar, parametre değerlerini önceden sıralama ile alıyordu, bu yeni özellik ile parametreler sıraya bakmaksızın isimleri ile gönderilebiliyor.

Bu, okunabilirliği arttırır ve fonksiyon çağrısında istenmeyen hataları önlüyor.

Match Expression,

Match ifadesi, Switch ifadesinin alternatifi olarak kullanılabiliyor. Bu ifade, kodu daha okunaklı hale getiriyor.

Nullsafe Operator,

Yeni özelliklerden Nullsafe operatorü, bir nesnenin var olup olmadığını kontrol ediyor ve eğer nesne varsa bir özelliği kullanabiliyorsunuz.. Bu, kodunuzda null check yaparken daha az kod yazmanızı sağlıyor.

Attributes,

Artık kodda özniteliklerin (attributes) kullanımına izin veriliyor. Bu, kodu daha düzenli ve okunaklı hale getiriyor

Constructor Property Promotion,

Sınıfın özelliklerini tanımlarken Constructor fonksiyonu içinde tanımlamayı kolaylaştırıyor.

Weak Maps,

Bir nesneyi anahtar olarak kullanırken nesnenin bellekte tutulması artık zorunlu değil. Bu, performansı arttırıyor ve bellek sızıntılarını önlüyor.

Just-In-Time (JIT) Compilation PHP 8,

PHP 8.0 ve sonrası sürümlerinde, Just-In-Time (JIT) derleyicisi varsayılan olarak etkin şekilde geliyor. JIT derleyicisi, PHP kodunu çalıştırırken, kodun belirli bölümlerini önceden derliyor ve böylece kodun daha hızlı çalışmasına olanak tanıyor. PHP JIT derleyicisini kullanmak için, öncelikle PHP 8.0 veya daha yeni bir sürümünü yüklemeniz gerekiyor. Daha sonra, JIT derleyicisini etkinleştirmek için opcache.jit_buffer_size ve opcache.jit yapılandırma ayarlarını yapılandırmanız gerekiyor. Bu ayarlar, php.ini dosyasında veya çalışma zamanında ini_set() işleviyle ayarlanabiliyor.

Aşağıdaki örnek, JIT derleyicisini etkinleştirmek için php.ini dosyasındaki ayarları gösteriyor

opcache.jit_buffer_size ayarı, JIT derleyicisi tarafından kullanılacak bellek tampon boyutunu belirliyor. opcache.jit ayarı, JIT derleyicisinin etkinleştirilmesi için kullanılan anahtar olarak karşımıza geliyor. Bu ayarın değeri, JIT derleyicisinin hangi bölümlerin derlenmesi gerektiğini belirliyor. Değerler arasında 0 ve 2147483647 arasında herhangi bir sayı seçebiliyorsunuz. Örneğin, yukarıdaki örnekte 1235 değeri seçildi.

JIT derleyicisinin etkinleştirildiğini doğrulamak için, aşağıdaki PHP kodunu kullanabiliyorsunuz.:

Bu kod, JIT derleyicisinin durumunu gösterir ve int(1235) şeklinde bir çıktı vermelidir.

JIT derleme, özellikle performansı önemli olan uygulamalar için faydalıdır, örneğin büyük veri işleme uygulamaları ve web uygulamaları.

Aşağıdaki kod, iki sayıyı toplar ve bir milyon kez çağırıyor. Bu kodu çalıştırdığınızda, ortalama süre yaklaşık 0.036 saniyedir. JIT derleyicisi kullanarak, bu süreyi 0.020 saniyeye kadar düşürebilirsiniz.

JIT derleyicisinin nasıl kullanılacağı hakkında daha fazla bilgi için PHP resmi belgelerine bakabilirsiniz.

Diğer Yenilikler ,

PHP 8 ile birlikte ayrıca aşağıdaki şu yeniliklerin geldiğini de not etmek isterim:

1. Güncellenmiş tip belirleyicileri

2. Tarayıcı desteği

3. Zend Engine 4

4. Güncellenmiş hata iletisi biçimi

5. Statik analiz araçları için geliştirilmiş özellikler

6. Güncellenmiş çift işaretli operatör

7. Geliştirilmiş preg_match() fonksiyonu

8. Windows üzerinde OpenSSL 1.1.1 desteği

Sonuç olarak, PHP 8 ile birçok yeni özellik ve geliştirme geldi. Bu özellikler, kodun okunabilirliği, performansı ve güvenliği için faydalı olması ile dikkat çekiyor. Güncelleme sırasında eski kodların etkilenmemesi için dikkatli olunması gerektiği bilgisini de paylaşmak isterim.

--

--