PHP 5.5 ‘in bize getirdiği yenilikleri

OPcache Eklentisi
Zend Optimiser+ opcode cache (işlem kodu önbelleği) eklentisi, OPcache ismini alarak PHP 5.5’e ilave edildi.

OPcache, ön-derlenmiş betiği (script), paylaşılan bellekte saklayarak, PHP’nin gelen her talepte betiği yeniden yüklemesi ve işlemesi ihtiyacını ortadan kaldırarak, PHP’nin performansını arttırır. Opcode cache kullanılmadığında, bir .php dosyasının her çalıştırılışında, çalışma-zamanı derleyicisi tetiklenir, dosyanın bellekteki temsili hali oluşturulur (intermediate code) ve çalıştırıcı tetiklenir.

PHP 5.4 ve öncesindeki sürümlerde PHP’nin performansını arttırmak için opcode cache eklentisi olarak yaygın olarak APC (Alternative PHP Cache) eklentisi kullanılıyor. OPcache ile APC temelde aynı işlevi görmektedir.

OPcache’in APC’ye kıyasla üstün olduğu yönler
•    Zend Optimizer+ (OPcache), kullanıldığı koda göre değişkenlik göstermekle birlikte, APC’ye kıyasla %5 – %20 arası daha yüksek performans sergiliyor.
•    Zend Optimizer+ (OPcache) Zend şirketi ve PHP topluluğu tarafından geliştirildiği için, yeni çıkacak tüm PHP sürümleriyle, bu sürümler çıktığı anda uyumlu olarak gelecek.
•    Zend Optimizer+’ın (OPcache) tercihe bağlı olarak kullanılabilen bozulma tespiti (corruption detection) özelliği bulunduğundan, bir PHP fonksiyonunun C dilinde hatalı uygulanmış olmasından kaynaklanabilecek sunucu çökmelerini engelleyebilir. Bu nedenle diğer paylaşımlı bellek işlem kodu önbellek eklentilerine göre daha güvenilirdir.
•    PHP ile diğer eklentilere kıyasla daha uyumludur. PHP’nin tüm fonksiyonları ile beklendiği şekilde uyumlu çalışır.

APC’nin OPcache’e kıyasla üstün olduğu yönler
•    APC eklentisi verileri önbellekte tutmak için kullanılabilir. OPcache’te ise bu özellik mevcut değildir. OPcache sadece işlem kodu önbelleği olarak çalışmak üzere tasarlanmıştır. APC’de olduğu gibi verileri saklamak için kullanılamaz.
•    APC önceden kullanılmış ve artık geçersiz olan betiklere (script’lere) ait bellek alanlarını tasfiye ederek yeniden kullanabilir. OPcache ise bu gibi alanlar kirli (dirty) olarak işaretler, fakat tasfiye etmez. Bunun yerine kirli bellek miktarı sizin belirleyebileceğiniz bir eşiği aştığında, OPcache kendini yeniden başlatarak, bu bellek alanlarını serbest bırakır. Bu özelliğin OPcache’in kararlı çalışması açısından hem avantajları, hem de dezavantajları olduğu söylenmektedir.

OPcache eklentisi nasıl kurulur?
PHP 5.5 sürümünü derlerken –disable-all anahtarını kullanmadığınız sürece, OPcache kendiliğinden PHP 5.5 içine derlenecektir. Eğer –disable-all seçeneğini kullandıysanız, OPcache’i etkin hale getirmek için derleme sırasında –enable-opcache anahtarını kullanmalısınız.

PHP 5.4, 5.3 ve 5.2 sürümlerinde OPcache eklentisini kullanmak isterseniz, PECL paket kütüphanesinden Zend OPcache eklentisini indirerek kurabilirsiniz.

Şifreleri hash’lemek için yeni API
php-5.5-password
PHP kriptografi uzantılarına bir yenisi eklendi: Password Hashing. Bu uzantı PHP’nin crypt() fonksiyonunu sarmalayarak daha kolayca ve güvenli bir şekilde şifreleri oluşturmanıza ve saklamanıza yardımcı oluyor. Bu uzantı PHP 5.5 içinde kurulu olarak geldiğinden, ayrıca bir kurulum yapılması gerekmiyor.

GD görüntü işleme kütüphanesine yeni gelen özellikler
•    imageflip() fonksiyonu ile görüntü çevirme özelliği eklendi.
•    imagecrop() ve imagecropauto() fonksiyonları ile gelişmiş görüntü kırpma özellikleri eklendi.
•    imagecreatefromwebp() ve imagewebp() fonksiyonları ile, Google tarafından geliştirilen görüntü biçimi olan WebP için okuma ve yazma desteği eklendi.

Generator özelliği
PHP 5.5’e generator özelliği yield anahtar kelimesi ile eklendi. Generator’ler Iterator interface’ini implement etmekle uğraşmaya gerek kalmadan kolayca iterator’ler oluşturmak için kullanılabiliyor.

Örnek kod:

<?php

function bilesikFaizHesapla($tutar, $faizOrani, $donem) {
for($i = 0;  $i < $donem; $i++) {
$tutar += $tutar * $faizOrani / 100;
yield $tutar;
}
}

foreach(bilesikFaizHesapla(1000, 10, 5) as $donemSonuTutar) {
echo “donem sonu tutar: $donemSonuTutar n”;
}

?>

Yukarıdaki kod aşağıdaki çıktıyı verir:
donem sonu tutar: 1100
donem sonu tutar: 1210
donem sonu tutar: 1331
donem sonu tutar: 1464.1
donem sonu tutar: 1610.51

Finally anahtar kelimesi eklendi
try-catch blokları artık finally anahtar kelimesini destekliyor. Finally bloğuna yazılan kod, try ve catch bloğundan sonra, bir istisna oluşturulmuş olsa da olmasa da çalıştırılır.

Foreach yapısı bundan böyle sayıl olmayan değerleri de destekliyor
PHP array’lerinde sadece sayıl olmayan anahtarlar (non-scalar keys) olmamasına rağmen, SPL koleksiyonunda yer alan Iterator::key() metodu herhangi bir tipte veri dönebilmektedir. Foreach yapısı artık sadece sayıl anahtarları değil, herhangi bir tipte verinin doğru olarak ele alınmasını desteklemektedir.

Windows ortamında Apache 2.4 işleyici desteği
Apache 2.4 SAPI işleyicisi artık Windows ortamında da destekleniyor.

empty() artık değişkenler dışındaki değerleri de kabul ediyor
PHP 5.4 ve öncesinde sadece değişkenin değerinin boş olup olmadığını kontrol edebilirken, PHP 5.5 ile birlikte herhangi bir ifadenin değerini kontrol edebilmektedir.

Foreach kontrol yapısı list() ile kullanılabiliyor
İç içe geçmiş dizileri (nested arrays) açmak için list() fonksiyonu foreach yapısı ile birlikte kullanılabiliyor.

Örnek Kod:

<?php

$alanKodlari = [
[‘adana’, 322],
[‘adiyaman’, 416],
[‘afyon’, 272],
[‘agri’, 472] ];

foreach($alanKodlari as list($sehirAdi, $alanKodu)) {
echo “$sehirAdi alan kodu: $alanKodu n”;
}

?>

Yukarıdaki kod aşağıdaki çıktıyı verir:

adana alan kodu: 322
adiyaman alan kodu: 416
afyon alan kodu: 272
agri alan kodu: 472

Array ve String değeri çözümlemesi (literal dereferencing)
Array ve string değerleri artık tekil öğe ve karakterlerine erişmek için doğrudan çözümlenebiliyor.

<?php

echo “Array değeri çözümlemesi: “;
echo [‘PHP’, ‘-‘, ‘TR’][0];
echo “n”;

echo “String değeri çözümlemesi: “;
echo ‘PHP’[0];
echo “n”;

?>

Yukarıdaki kod aşağıdaki çıktıyı verir:

Array değeri çözümlemesi: PHP
String değeri çözümlemesi: P

class:: kullanarak class ismi çözümlemesi
ClassName::class kullanarak bir class’ın tam kalifiye ismine erişmek artık mümkün.

Örnek Kod:

<?php

namespace OrnekProje;
class Deneme { }

echo Deneme::class;
echo “n”;

?>

Yukarıdaki kod aşağıdaki çıktıyı verir:

OrnekProjeDeneme

 

kaynak : http://www.php-tr.com/php-5-5-ile-gelen-yenilikler/