Gönderen Konu: PHP 5.4 Versiyonu  (Okunma sayısı 5279 defa)

PHP 5.4 Versiyonu

« : 05.03.2012 11:49:01 »
Hızlı düğmeleri aç

skate

İleti: 5.245

A Sinner Scener
Çevrimdışı
  • Administrator
  • *****
  • Hero Member
    • Profili Görüntüle
    • http://www.akaydin.com/
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:

Kod: [Seç]
<?php
class {
    function 
myFunction1() { ... }
}

class 
extends {
    ...
}
?>


Bu örnekte B class'ı A'nın "myFunction1()" fonksiyonunu artık içermektedir. Ancak şöyle birşey yapmak istediğimizde;

Kod: [Seç]
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);

Kod: [Seç]
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:

Kod: [Seç]
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;

Kod: [Seç]
    $myArray = array(...);
?>

şunu;

Kod: [Seç]
    $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;

Kod: [Seç]
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... :)
« Son Düzenleme: 05.03.2012 11:51:55 Gönderen: skate »