php 5.4 array dereferencing

php 5.4 ile gelen yeni özelliklerden biri de, array döndüren metodları kullanırken kolaylık sağlıyor.
Aşağıdaki örnekte getData metodu, array döndüren bir metod. Ve metodu çağırır çağırmaz ise, array keyini yazıp hemen dönen sonucu kullanabiliyoruz.

Tabi burada tanımsız ise hata almanız kaçınılmaz, bu yüzden yanlış veya olmayan bir key’i çağırmamaya dikkat etmeniz şart. Çok da hata bakımından kontrol edilebilir bir şey değil çünkü bu.

function getData() {
    return ['firstname' => 'Emre', 'lastname' => 'Macit'];
}

echo getData()['firstname'];

php 5.4 callable typehint

Php 5.4 te gelen yeni bir özellik de “callable” typehinti.
Callable ile , “çağrılabilir” bir parametre geleceğini ifade etmiş oluyorsunuz. ve istediğiniz zaman bunu çağırabiliyorsunuz.

class Meyve
{
    function __construct($name)
    {
        $this->name = $name;
    }

    public function selam()
    {
        return "Selam " . $this->name;
    }
}
//fonksiyonumuzu tanımlarken $f yi callable olarak cast ediyoruz. (hint ediyoruz)
function selam(callable $f) {
//ve bu şekilde çağırabiliyoruz.
    $f();
}

selam([new Meyve("Armut"), 'selam']);

Php 5.4 Sinif Metoduna Hizli Erisim

php 5.4 ile birlikte sınıf metodlarına hızlıca erişimin de önü açıldı. böylece 2 satırda yapacağımız işleri artık tek satırda yapabiliyoruz.

class Araba
{
    public $name;
    function __construct($name)
    {
        $this->name = $name;
    }

    public function selam()
    {
        return "Selam " . $this->name;
    }
}

// eski stil
$araba = new Araba("Mersedes");
echo $araba->selam();

// yeni harika stil
echo (new Araba("Ferrary"))->selam();

isimsiz fonksiyonlar (anonymous functions – closures) (php 5.3 ve sonrasi)

İsimsiz fonksiyonlar php’nin 5.3 ve sonraki sürümlerinde yer alan güzel bir özelliktir.

Nedir isimsiz fonksiyon? 

Bir mantığa veya algoritmaya ihtiyacınız var ancak bunun dünyanızda o kadar da önemli bir yeri yok. Belki sadece kodunuzu düzgün yazmak istiyorsunuz, veya yapacağınız şeyi daha temiz yapmak istiyorsunuz.

Bu noktada, isimsiz fonksiyonların kullanımı tercih edilebilir.

$selam = function($isim){
    printf("Merhaba %s\r\n", $isim);
};//şeklinde tanımlayıp
echo $selam('Emre');//şeklinde kullanabiliriz.

Yani anlayacağımız şekilde söylersek, bir değişkene bir fonksiyon atamış gibi bir şey oluruz.

php 5.4 ten itibaren de bu isimsiz fonksiyonların içinde “$this” kelimesi de kullanılabiliyor oldu. Bir Class içerisindeki bir metodun içinde kullanıldığında, $this->fonksiyon_ismi() diyerek ilgili classtaki fonksiyonu da çalıştırabiliyor artık.

http://www.php.net/manual/en/functions.anonymous.php#106046 linkinde ise ilginç (güzel) bir kullanımı var. Bir göz atmanızı tavsiye ederim. (kullanmanızı tavsiye etmem ama :), php içinde html’e karşıyım. )

php 5.4 Diziler (Array) – Php Yeni Özellikler

Php 5.4 ün içindeki yeniliklerden biri de dizilerdeki (array’lerdeki) kısaltılmış kullanım özelliğidir. Aşağıda bu kullanım ile ilgili bir örnek verdim.

//Php 5.4'ten önce
< ?php
$array = array(
    "key1" => "value1",
    "key2" => "value2",
);

// PHP 5.4 'ten itibaren
$array = [
    "key1" => "value1",
    "key2" => "value2",
];

Ayrıca geri döndürdüğü (return değeri) array olan fonksiyonlarda da eskiden uğraştığımız ilk önce değişkene atama çilesi, php 5.4 ile bitmiş olacak.
Artık fonksiyon çağırdıktan sonra doğrudan köşeli parantez ile istediğimiz indisi alabiliriz.

Not : Bu durum optimize çalışmayan metodlar, fonksiyonlar yazmanıza sebep olabilir, bu konuda sistemin gereksiz enerji harcamamasına dikkat ediniz.

< ?php
function getArray() {
    return array(1, 2, 3);
}
// php 5.4'ten önce
$tmp = getArray();
$secondElement = $tmp[1];

//PHP 5.4'ten itibaren
$secondElement = getArray()[1];

// veya
list(, $secondElement) = getArray();
?>