php - method chaining - object oriented programming
php 5 ile gelen oop geliştirmelerinden birisi de class'ların sahip olduğu function'ların (method) object'leri return edebilmesidir. tam türkçe kullanacak olursam sınıfların fonksiyonlarının nesneleri döndürebilmesidir.

bu olayın güzelliği şöyle bir kod yazmamıza izin vermesidir.

$object->method1()->method2()->method3()->...

peki bu tarz bir yazım bize ne kazandırır? kodumuzun okunabilirliğini arttırır ve tekrarlardan kurtulmamızı sağlar.

çalışan bir örnekle yazıma devam edeceğim. geleneksel yöntemle yazacağımız kod bloğu şöyle olacaktır:


<?php

class kisi
{
    private $ad;
    private $yas;

    public function __construct() { }
    
    public function set_ad($ad)
    {
        $this->ad $ad;
    }

    public function set_yas($yas)
    {
        $this->yas $yas;
    }
    
    public function goster()
    {
        echo 'Merhaba benim adım ' $this->ad '. ' $this->yas ' yaşındayım';
    }
}

$kisi = new kisi();
$kisi->set_ad('Emrah');
$kisi->set_yas('23');
$kisi->goster();

?>



ekran çıktısı

Merhaba benim adım Emrah. 23 yaşındayım

geleneksel yöntemdeki karmaşanın göze batmaması imkansız. artan satır sayısı ve tekrarlanan "$kisi" nesnesi. method chaining bize ilgili method'ları arka arkaya tek satırda kullanma imkanı vermektedir.

method chaining örneği:


<?php

class kisi_chain
{
    private $ad;
    private $yas;

    public function __construct() { }
    
    public function set_ad($ad)
    {
        $this->ad $ad;
        return $this;
    }

    public function set_yas($yas)
    {
        $this->yas $yas;
        return $this;
    }
    
    public function goster()
    {
        echo 'Merhaba benim adım ' $this->ad '. ' $this->yas ' yaşındayım';
    }
}

$kisi = new kisi_chain();
$kisi->set_ad('Emrah')->set_yas('23')->goster();

?>



ekran çıktısı

Merhaba benim adım Emrah. 23 yaşındayım

farkedeceğiniz üzere class'ımızın üzerinde yaptığımız değişiklik method'ların içinde yer alan "$this" nesnesini return ile döndürmek oldu.

return $this;


Ad Soyad:
E-posta:
Web site:
şuralara da bakın derim

Burak İlem

Ali Yılmaz