1 Mart 2012 itibariyle PHP 5.4.0 yayınlandı. PHP 5.3'ün en büyük olayı namespace'lerin eklenmesiydi. PHP 5.4'de ise "trait" özelliği OOP açısından büyük bir kullanım rahatlığı getiriyor.
Trait nedir?
PHP, benzeri birçok dilde olduğu gibi multiple inheritance desteklemez. PHP'de inheritance için "extends" kullanılmaktadır. Örnek:
<?php
class A {
function myFunction1() { ... }
}
class B extends A {
...
}
?>
Bu örnekte B class'ı A'nın "myFunction1()" fonksiyonunu artık içermektedir. Ancak şöyle birşey yapmak istediğimizde;
class A {
function myFunction1() { ... }
}
class B {
function myFunction2() { ... }
}
class C extends A, B { // <- HATA!!!
...
}
?>
Birden fazla class üzerinden inheritance mümkün değildir. Bunun için belki (eğer yapı ve şartlar uygunsa);
class A {
function myFunction1() { ... }
}
class B extends A {
function myFunction2() { ... }
}
class C extends B {
...
}
?>
Böyle bir çözüm kullanılabilir. Yani B A'dan, C de B'den türetilirse sonuç olarak C "myFunction1()" ve "myFunction2()"ye sahip olacaktır. Ama daha kompleks yapılarda, örneğin elimizdeki 10 tane class'ın birkaçından türetmek istediğimiz classlarımız oldukça bu kullanım karmakarışık bir hal alabilir. Aslında biz hep altyapımızı amacımıza uygun tasarlayarak single inheritance ile de durumu kontrol altında tutabilir ve karmaşık bir yapı oluşmasını önleyebiliriz. Ya da bu noktada interfacelerden yararlanabiliriz. Ancak PHP 5.4'de gelen trait özelliği bu işe çok güzel bir çözüm oluşturmuş.
Örnek:
trait A {
function myFunction1() { ... }
}
trait B {
function myFunction2() { ... }
}
class C {
use A, B;
...
}
?>
"extends" bile kullanmadan işi çözebiliyoruz. "class" yerine "trait" kullandıktan sonra classımızın içinde "use" ile hangi traitleri kullanmak istediğimizi dilersek tek satırda bile verebiliyoruz. Tabii bu arada istersek yine "extends" kullanarak mevcut bir sınıfın özelliklerini de classımıza ekleyebiliriz.
Kısa Array Tanımlama Özelliği
Artık şunun yerine;
$myArray = array(...);
?>
şunu;
$myArray = [...];
?>
yazabiliyoruz.
Built-in Web Server
Artık sadece PHP kurulu olan, Apache, IIS v.b. bir web server kurulu olmayan bir makinede de web sayfalarınızı test edebileceksiniz. Çünkü artık PHP'nin içersinde basit bir CLI SAPI web server geliyor. Bu web server'ı php.exe üzerinden;
php -S localhost:8000
şeklinde çalıştırabiliyorsunuz.
Sonuç
PHP 6.0 (hatta bir iddiaya göre 6.0 çıkmadan 7.0 çıkabilirmiş 6.0 çok yılan hikayesine döndüğü için) çıkana kadar 5.x versiyonu kendi içersinde oldukça sağlam gelişmeler ve yeni özelliklerle ilerlemeye devam ediyor. Tahminim PHP 5.5 yerine artık 6 ya da 7 serisini göreceğimiz yönünde. Ama bu gidişle belli de olmaz...