PHP 7 ile Gelen Yeni Özellikler

PHP5 versiyonu bildiğiniz üzere ZEND Engine II ( C  ile yazılmış PHP’yi tercüme eden bir motor) altyapısı üzerinde çalışıyordu. PHP7’de PHP#NG (Next Generation) motoru kullanılıyor. PHPNG hem sıfırdan temiz bir şekilde yazılmış, hem de aynı anda işleme ve belleği temiz tutma özelliğine sahip bir hafıza yönetimine sahip. Bu da demek oluyor ki PHP7 çok daha hızlı olacak . Hızlı olmasının yanında daha az server gücü ile daha fazla isteğe cevap veriyor. Zend’in yayınladığı tabloda frameworkler’de de belirgin bir performans yükselişi mevcut.

PHP5 Windows sistemlerde  64bit desteği sunmadığı için biraz performans kaybı oluyordu. Hatta deneysel sayılıyordu. PHP7 tutarlı bir 64bit desteği sağlıyor. Bu sayede Windows Server kullanımı da tercih edilebilecek gibi görünüyor.

İsim: PHP 7 (PHP 6 Değil)

Şu anki PHP sürümü 5.6. Bazı tartışmalardan sonra geliştirme ekibi PHP 6 ismini es geçmeye karar verdi. PHP 6, deneysel bir projeydi, fakat bir türlü üretim aşamasına geçemedi.

Kullanıcıların kafasını karıştırmamak için yeni temel sürüm PHP 7 olarak isimlendirildi.

 Yeni -Muhteşem- Zend Engine

Zend motoru, 1999 yılında yeni PHP 4 sürümünden beri PHP’ye güç veriyor. (Zend’i Zend Framework ile karıştırmayın.) Zend, C’de yazılmış, PHP dilini yorumlayan açık kaynaklı bir uygulama motoru. Mevcut PHP 5.X serileri, ilk motorun daha gelişmiş özelliklerini içinde barındıran, dile genişletilebilir bir nesne modeli ve fark edilebilir ölçüde performans geliştirmeleri sağlayan Zend Engine II’yi kullanıyor.

PHP 7 ile birlikte, uygulama motoru PHP#NG (Next Generation) ismini alıyor.

Hata Yakalama

Bir diğer özellik ise hata yakalama kolaylığı. Yeni Engine Exceptions sayesinde ölümcül ve yakalanabilir ölümcül hataları istisnalar (exceptions) ile değiştirebiliyoruz. İstisna yakalanmazsa ölümcül hata dönmeye devam ediyor. Yeni \EngineException nesneleri \Exception temel sınıfından türetilmediği için geçmiş sistemlere uyumluluk da sağlanmış oluyor. \BaseException adı altında yeni bir paylaşımlı üst sınıf sunuluyor. Hata ayıklama ile ilgili ayrı bir yazı yazmak gerekir ama kısaca bir örnek (php.net’ten);

function add(int $left, int $right) {
 return $left + $right;
}
 
try {
 echo add('left', 'right');
} catch (Exception $e) {
 // Handle or log exception.
}

Spaceship (Uzay Gemisi) Operatörü

İki değeri karşılaştırarak; her iki değer eşitse “0″,  soldaki değer büyükse “1″, sağdaki değer büyükse “-1″ döndürür. Örneğin;

// Tam Sayı echo 1 <=> 1; // 0 echo 1 <=> 2; // -1 echo 2 <=> 1; // 1 // Float echo 1.5 <=> 1.5; // 0 echo 1.5 <=> 2.5; // -1 echo 2.5 <=> 1.5; // 1 // String echo "a" <=> "a"; // 0 echo "a" <=> "b"; // -1 echo "b" <=> "a"; // 1

Null Coalesce Operatörü​

Eğer bir değişkenin içeriği varsa belirtilen değeri almak, yoksa varsayılan bir değer atamak için en kısa şekilde Ternary operatörünü kullanıyorduk.

1
isset($_GET['adsoyad']) ? $_GET['adsoyad'] : ""

PHP 7 ile birlikte gelen Null Coalesce operatörüyle bu dizilimi aşağıdaki şekilde daha kısa ve anlaşılır şekilde yazabiliyoruz. Eğer GET ile gelen değişken NULL değilse içeriği $adsoyad değişkenine ata yoksa $adsoyad değişkenine ‘Hiç Kimse’ değerini ata.

$adsoyad= $_GET['adsoyad'] ?? 'Hiç Kimse';

Anonim Sınıflar

var_dump(new class($i) {
 public function __construct($i) {
 $this->i = $i;
 }
});

Dönüş Tipleri

Fonksiyonlarda parametre ve dönüş tipleri belirtilebilinir. Kullanımız zorunlu olmamakla beraber PHP’nin kod okunabilirliği yönündeki büyük bir eksikliği gidermesi açısından önemli. Örnek olarak;

2
3
function topla(int $sayi1, int $sayi2) : int {
 return $sayi1 + $sayi2;
 }

64-bit Windows Desteği

PHP, doğal olarak Linux ortamını kullanıyor, fakat Windows sistemlerde de çalışabiliyor. 5.X serileri henüz 64 bit integer ya da büyük dosya desteği sunmadığı için x64 mimarileri deneysel kabul edilirdi.

PHP 7, 64 bit integer’lar ve büyük dosyalara destek vererek 64 bit Windows sistemlerde de kararlı olarak çalışacak.

Hız İkiye Katlanıyor

PHPNG’nin öne çıkan özelliği, performansı önemli ölçüde artırması. PHPNG’nin geliştirme ekibi, Zend Engine’i yeniden yapılandırdı, bellek kullanımını optimize etti ve uygulama önceliği yerine çalışma zamanında derlemeye izin veren tam zamanında derlemeyi (just-in-time compilation) ekledi.