medyaonline-kayseriweb info@medyaonline.net

PHP 7 kullanıyormusunuz yenilikleri inceleyin | medyaonline.net | Kayseri web tasarım

PHP 7 kullanıyormusunuz yenilikleri inceleyin

PHP 7 kullanıyormusunuz yenilikleri inceleyin

PHP ile web programlama yapıyor musunuz? Ya da WordPress, Drupal, Joomla!, Magento gibi betiklerin kullanıldığı siteleriniz var mı? O zaman sizin için güzel bir haberimiz var:

 

PHP 7 yayınlandı. Şu anda beta sürüm olmasına rağmen eklenmesi kararlaştırılan tüm özellikler eklenmiş durumda. Bundan sonraki betalar hata düzetmeleri ağırlıklı olacak, final sürüm ise Kasım ayında yayınlanacak.

Beta olduğundan, canlı sitelerinizde kullanmamanız önerilir. Eğer yeni özellikleri erkenden test etmek isterseniz, bir test ortamı hazırlayıp PHP 7’yi deneyebilirsiniz. Hatta, gördüğünüz hataları ileterek PHP 7’nin gelişmesine katkıda bulunabilirsiniz.

1) İ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.

2) Yeni -Muhteşem- Zend Engine

phpng

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.

3) 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.

wp-php7-performance

frameworks-php7-performance

Sonuçlar etkileyici. PHP 7 yalnızca kodları hızlı çalıştırmakla kalmayacak, aynı zamanda daha az sunucu ile daha fazla isteğe cevap verebilecek.

4) Hata Yakalama Kolaylıkları

Açıkçası, ölümcül ve yakalanabilir ölümcül hatalar ile başa çıkmak PHP’de kolay bir iş değildi. Yeni Engine Exceptions bu tür hataları istisnalar ile değiştirmenizi sağlayacak. İstisna yakalanmazsa PHP, 5.X serilerindeki gibi ölümcül hatayı dönmeye devam edecek.

Yeni EngineException nesneleri Exception temel sınıfından türetilmiyor. Bu sayede geriye uyumluluk sağlanıyor.

PHP 7, yazılımcıların ikisini de kullanabilmesi için BaseException adı altında yeni bir paylaşımlı üst sınıf sunuyor.

1
2
3
4
5
6
7
8
9
try {
 
call method(null); // oops!
 
} catch (EngineException $e) {
 
echo "Exception: {$e->getMessage()} ";
 
}

5) 64-bit Windows Desteği

win-x64-support

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.

6) Yeni Spaceship ve Null Birleştirici Operatörleri

spaceship-operator

Spaceship operatörü, RFC’de Birleşik Karşılaştırma Operatörü ismiyle kabul ediliyor. Yeni operatörün gösterimi  şeklinde. Bu ifade, basit bir uzay gemisine benzediği için spaceship ismini almış.

Spaceship operatörü, iki değer de eşitse 0, soldaki büyükse 1, sağdaki büyükse -1 değerini döner. Perl ve Ruby’de de bulunur ve üç yönlü karşılaştırma operatörü ismiyle de anılır.

Null birleştirici operatör iki soru işaretiyle (??) gösterilir. Bir şeyin var olup olmadığını ve eğer bu şey yoksa varsayılan bir değer dönmenizi sağlar. Birleştirme operatörü, ilk ifade varsa ve boş değilse, sonuç olarak o ifadeyi, diğer durumlar için ikinci ifadeyi döner.

Aşağıda örnekte de görebileceğiniz gibi, bu iki yeni operatör gereksiz kodları azaltacak.

null-coalesce-operator

7) Tür Bildirimleri

Dönüş türü bildirimleri

Bir fonksiyonunun dönüş türünü tanımlayarak, istenmeyen dönüş değerlerini önlemek artık mümkün. Diğer dillerde olan ve kod kalitesini artıran bu özellik PHP 7 ile birlikte geliyor.

Aşağıdaki kodda foo() fonksiyonu dizi döndüğünü varsayıyor.

1
2
3
function foo(): array {
return [];
}

Sayısal tür bildirimleri

Özelliği daha da geliştirmek üzere PHP 7, sayısal değerler için 4 yeni tür tanımlaması ekliyor: int, float, string ve bool. Yeni sayısal türler, geliştiricilerin, dönüş değerlerini integer, float, string ve boolean olarak tanımlayabilmesini sağlıyor. Tür bildirimleri için 2 mod var. Öntanımlı olarak gelen zayıf kipte, dönen değerler istenen türde değilse tanımlanan türe zorlanır. Yani hata oluşmaz, tür dönüşümü yapılır. Kesin (strict) kipte ise dönen değer doğru türde değilse TypeError istisnası oluşur. Kesin kip kullanmak için sayfanın başında declare(strict_types=1); gibi bir tanımlama yapmak gerekiyor.

PHP 7 ile gelen sayısal türler, parametrelerin tür dayatmalarına imkan veren Type Hint‘ler tarafından da desteklenecek.

8) Anonim Sınıflar

C# ve Java gibi nesneye yönelik dillerde zaten iyi benimsenmiş bir alışkanlık olan anonim sınıf kullanımı PHP’ye de geliyor. Anonim sınıf, ismi olmayan sınıftır. Nesne, aynı fonksiyonelliği, isimlendirilmiş bir sınıfın bir nesnesi olarak gerçekleştirir.

Sözdizimi, halihazırda kullandığımız geleneksel PHP sınıflarındaki gibi olup sadece ismi eksiktir. Anonim sınıf iyi kullanıldığında işletim süresini kısalttığı gibi kodlamayı da hızlandırır. Anonim sınıflar, bir sınıf sadece bir çalıştırma boyunca kullanıldığında ve bir sınıfın dökümanını yazmaya gerek olmadığı durumlarda mükemmeldir.

1
2
3
4
5
var_dump(new class($i) {
   public function __construct($i) {
       $this->i = $i;
   }
)};

9) Aynı Namespace’lerden İçe Aktarma Kolaylıkları

Group Use Declarations ile use ifadesini kullanarak tek tek tanımladığımız namespace’leri artık gruplayabiliyoruz. Yeni sözdizimi laf kalabalığını önlüyor, kodunuzu daha düzenli hale getiriyor.

Gruplama yaparak aynı modülü işaret eden içe aktarmalar yapacağımız için okunabilirlik artacak ve hata tespiti daha kolay olacak.

1
2
3
4
5
6
7
8
// Grup kullanımı için önerilen sözdizimi
use FooLibraryBarBaz{ClassA, ClassB, ClassC, ClassD as Fizbo};
 
// Mevcut kullanımla kıyaslaması
use FooLibraryBarBazClassA;
use FooLibraryBarBazClassB;
use FooLibraryBarBazClassC;
use FooLibraryBarBazClassD as Fizbo;

10) Temizlik Vakti

PHP 7’nin hedefi, artık kullanılmayan, eski ve destek verilmeyen sunucu API’leri ve eklentilerinden kurtulmaktı.

Kaldırılacak öğeler PHP 5 sürümlerinde duyuruldu. Buna rağmen geriye uyumluluk açısından destek sürüyordu. Bu öğeler, yenilikleri takip eden yazılımcılar tarafından bir süredir zaten muhtemelen kullanılmıyorlardı. Bunlar PHP 7’de tamamen kalkacağı için, eski bir PHP sürümünde geliştirilmiş projeniz varsa PHP 7’yi kurduğunuzda çalışmayabilir.

Kaynak: http://www.hongkiat.com/blog/php7/

Yorumlar