Hoşgeldin PHP 5.4: Ne getirdin, ne götürdün?
01 Mar 2012Bilindiği üzere umutla beklenen PHP 6 sürümü bir süreliğine iptal edilmişti ve tamamen Unicode desteği askıya alındı, PHP geliştirme ekibi 5.4 sürümü için çalışmaya başlamıştı ve daha kararlı sürümü çıkmadan getireceği yeniliklerden bolca bahsedildi. Bügün yayınlanan PHP 5.4 sürümünün bize bazı güzel getirileri ve olması gereken götürüleri var. Performans olarak daha da iyi duruma getirilen ve yüzlerce hatanın ayıklandığı PHP 5.4 sürümü içinde gelen ve bana göre önemli olan bazı özelliklerden kısaca bahsedeceğim.
Yeni Özellikler
- Trait yapısı -
Özellikolarak çağırabileceğimiz bu yenilik sınıflara büyük bir esneklik getiriyor. PHP’de sınıflar birden fazla kalıtım alamadığı için bu özellik bize sınıflarda buna yakın bir özelliği vermemizi sağlıyor.Traitleri kendi başlarına bir sınıf gibi düşünebiliriz fakat bu sınıftan yeni nesneler oluşturamıyoruz, tanımladığımız sınıflaratraitler ile yeni özellikler, metodlar ekleyebiliyoruz. Bir sınıfta dilediğimiz kadartraitkullanabiliyoruz ve birtraiti de dilediğimiz kadar sınıfta kullanabiliyoruz. Bu yenilikle bazı PHP çatı/framework projelerinin de ileride değişime uğrayacağını düşünüyorum. Aşağıda basit birtraitkullanım örneğini görebilirsiniz. Detaylı bilgiyi de http://php.net/manual/language.oop5.traits.php adresinden bulabilirsiniz.
<?php
trait birinciOzellik {
public function Merhaba() {
echo "Merhaba!";
}
}
trait ikinciOzellik {
public function Selam() {
echo "Selam!";
}
}
class OrnekSinif {
use birinciOzellik, ikinciOzellik;
}
$ornek = new OrnekSinif;
$ornek->Merhaba();
$ornek->Selam();
?>- Kısa dizi operatörü/kısa dizi tanımlama - Dizileri Python dilindeki ya da JSON yapısındaki gibi tanımlayabiliyoruz. Aşağıdaki örnekte bunu görebilirsiniz:
<?php
$dizi = array(1, 2, 3);
/* PHP 5.4 ile gelen özellik */
$dizi = [1, 2, 3];
?>-
Gömülü web sunucusu - Özellikle geliştirme ortamında çok fazla gereksinim duyduğumuz ve genellikle hazır paketler (WAMP, MAMP gibi) kurarak çözdüğümüz, web ortamı için hazırladığımız betikleri deneme problemimizi hiçbir ek paket/yazılım kurmadan artık çözebiliyoruz. Komut satırından PHP içindeki gömülü olarak gelen web sunucusunu çalıştırarak hazırladığımız betikleri web ortamında çalıştırabiliyoruz. Sadece yazdığımız betikleri denemek amaçlı kullanmamız önerilsede beta sürümlerinde yaptığım denemelerde performans olarak ta gayet iyi görünüyor (nginx ve php-fpm kurulumuna karşı denedim). Yine de tekrar belirtelim şu anda bu özellik canlı yayında olan bir proje için uygun bir çözüm kesinlikle değil.
-
Oturum üzerinde yüklenen dosyaların durumu/takibi - (Ecnebi dilinde)
Upload Progressolarak bilinen ve şimdiye kadar üçüncü parti eklentilerle veyaAPCeklentisi ile çözüm bulduğumuz bu özelliği artık öntanımlı olarak kullanabiliyoruz. Web sayfasından yüklediğimiz dosyaların yükleme durumlarına oturum bilgilerinden ($_SESSIONsüper-global değişkeni içinden) erişiliyor. Detayları ve örnekleri http://php.net/manual/session.upload-progress.php adresinden görebilirsiniz.
Kaldırılan Özellikler
safe modeyapısı tamamen kaldırıldı – Birden fazla kişinin paylaştığı sistemlerde (barındırma hizmeti veren yerler gibi) bu özellik yerineopen_basedirvedisable_functionsayarlarıyla belirli bir seviyede güvenlik önlemi alabilirsiniz.register_globalsvemagic quotesyapısı kaldırıldı – Zaten kullanmamamız gereken ve birçok güvenlik açığına sebep olan bu iki özelliğin kaldırılması artık daha dikkatli ve bilinçli kod yazmamız gerektiğini bize zorla hatırlatacak gibi. (Zaten bu iki özelliği kullanmıyoruz değil mi?)magic quotesile ilgili fonksiyonlar (get_magic_quotes_gpcgibi) artık öntanımlı olarakfalsedeğerini dönüyor.break $degiskenvecontinue $degiskenkullanımı kaldırıldı.session_register(),session_unregister(),session_is_registered()fonksiyonları kaldırıldı.
Bunlar hariçinde gelen yenilikleri, değişiklikleri ve düzeltmelerin listesini http://php.net/ChangeLog-5.php adresinden bulabilirsiniz. PHP 5.3 sürümünden 5.4 sürümüne geçiş için ise http://php.net/migration54 adresinde dikkat edilmesi gereken hususlar bulunabilir.