RSS

PHP 5.4 ile gelen yeni özellikler

3 19 Aralık 2011 ~ Musa Avcı — Genel


PHP 5.4 versiyonunda gelecek olanlara baktığımda beni en çok sevindiren, Java veya Python dillerinde olan bir çok kolay dizin ve sınıf tanımlama işlemlerinini artık PHP’de de olacak olması. Çünkü diğer dillerde hep bu yüzden iç geçirirdim, bunlar neden PHP’de yok diye, neyseki sonunda geliyor.

Ben genel olarak gelecek olan yeniliklerden syntax konusunda ilgimi çekenleri örnekleriyle göstermek istiyorum. Eğer istersen şuradan tüm yapılan değişikliklere bakabilirsin.

Sınıfları oluşturuldukları anda kullanabilme

Normalde bir sınıfı kullanabilmemiz için onu önce bir değişkene yüklememiz gerekir. Fakat yeni sürüm ile birlikte artık bir değişkene yüklemeden de oluşturup kullanmaya başlayabiliriz.

class kedi {
   function function isim($isim) {
      $this->isim = $isim;
   }

   function miyav() {
      echo $this->isim . ': Miyaav!';
   }
}

(new kedi())->isim('Tekir')->miyav();

Sınıfı herhangi bir değişkene yüklemeden tek satırda oluşturup, metodlara ulaşıp çalıştırmış olduk.

Array tanımlama kısayolu

Python ya da Java bilenlerin PHP’de bu neden yok dediği olaylardan bir tanesi; bir dizi tanımlarken bunu array fonksiyonu ile yapmak yerine direkt köşeli parantez içine yazarak yapmak.

$meyveler = ['elma', 'armut', 'kiraz'];
// anahtarları ile birlikte
$uye = ['no' => 1, 'isim' => 'Musa', 'il' => 'İstanbul'];

Çok farkı olmasa da kullanışlı.

Array üzerinden bir sınıftaki metodu çağırma

Diğer örneklerin yanında bu biraz garip gelebilir, fakat bir sınıfın içindeki metodlara toptan ve sırayla çalıştırılmak istenildiğinde kullanılabilir.

class Deneme {
   function yazdir($metin) {
      echo $metin;
   }
}

$f = array('Deneme', 'yazdir');
$f('Selam Dünya');

“f” değişkenine “Deneme” sınıfının “yazdir” metodunu ifade edip fonksiyon gibi çalıştırdığımızda bize o metodu çalıştırmış olacak.

Array dönen fonksiyonlarda elemana direkt ulaşma

Bir fonksiyon array döndüğünde içerisinden bir elemana ulaşmak istediğimizde işlemden sonra tekrar değişken üzerinden okumamız gerekir. Fakat yeni sürümde fonksiyondan hemen sonra döndürülen arrayın bir elemanına ulaşabiliyoruz. Bu da benim favorilerimden.

function uye() {
   return ['isim' => 'Musa', 'soyisim' => 'Avcı'];
}

echo uye()['isim'];

Bunu yöntemi Python’da denedikten sonra çoğu kez PHP’de de yapmak istemişimdir.

Daha esnek metod çağırmak

Bir değişkene metodun adını yükleyip daha sonra sınıf üzerinden bu değişken adındaki metodu çağırabiliyoruz. Buna bir yöntem daha eklenmiş, şimdi bu iş için değişkene yüklememize de gerek kalmamış.

$isim = 'metod';

$deneme->metod(); // normalde
$deneme->$isim(); // değişken ile
$deneme->{'metod'}(); // değişkene ihtiyaç duymadan

Benim bu gösterdiklerim aslında sadece syntax ile alakalı yenilikleden bir kaçıydı. Bunların dışında onlarca hata giderilmiş ve onlarca geliştirilme yapılmış, tıpkı her yeni versiyonda yaptıkları gibi.

Bu ekleme ve geliştirmelerin yanı sıra ayrıca sonunda “safe_mod” kaldırılmış.

İlgimi çeken başka yenilikler bulursam yine bu yazı altında güncelleyerek paylaşmaya devam edebilirim…

Bir başka PHP serüveninde görüşmek üzere hoşçakalın!

Etiketler:

Yazılanlar ilgini çektiyse, yenilerinden haberdar olmak için e-mail bültenine abone olabilirsin.

"PHP 5.4 ile gelen yeni özellikler" yazısı için 3 yorum yapılmış.

  1. Eren dedi ki:

    PHP artık Javascript, Phyton vs. farklı dillerdeki güzel yönleri bünyesine kazandırmaya başladı ve bu durum çok iyi bence. Bu yeniliklerle birlikte PHP çok daha iyi bir dil haline gelecek diye düşünüyorum. Yeter ki hosting firmaları bu değişime hızlı uyum sağlayabilsin.

  2. Gökhan Bora dedi ki:

    değişkenlerin başında dolar işaret ($) kullanma zorunluluğu.
    GET yöntemiyle gelen verinin otomatik decode edilmesi.

    bu ikisini düzelmesi gerekiyor.

    “Sınıfları oluşturuldukları anda kullanabilme” başlığındaki güncelleme çok yerinde olmuş.

  3. mami dedi ki:

    class Deneme {
    function yazdir($metin) {
    echo $metin;
    }
    }

    $f = array(‘Deneme’, ‘yazdir’);
    $f(‘Selam Dünya’);

    ilginç olmuş bu

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir