2012-06-17 10 views
16

Zend Framework incelenmesi (Ben inceledik olanların) sınıfının herhangi birinin her ayarlayıcı yöntem o yaşıyor sınıfın örneğini döndürür bulundu. Sadece bazı değerini belirler ama değeri belirler ve ayrıca $ bu döner. Örneğin:

/* Zend_Controller_Router */ 
public function setGlobalParam($name, $value) { 
    $this->_globalParams[$name] = $value; 
    return $this; 
} 

    /* Zend_Controller_Request */ 
public function setBaseUrl($baseUrl = null) { 
    // ... some code here ... 
    $this->_baseUrl = rtrim($baseUrl, '/'); 
    return $this; 
} 

    /* Zend_Controller_Action */ 
public function setFrontController(Zend_Controller_Front $front) { 
    $this->_frontController = $front; 
    return $this; 
} 

Ve benzeri. Her kamu kurucusu bunu $ verir.

public function addConfig(Zend_Config $config, $section = null) { 
    // ... some code here ... 
    return $this; 
} 

ne için bu

gereklidir: Ve sadece belirleyicilerin, bazı eylem yöntemleri onlar da $ bu döndürür de vardır? Bunun $ karşılığı ne yapar? Özel bir anlamı var mı? return $this

+4

dönen '$ (bu) 'Eğer, örneğin, zincir yöntemleri olabilir demektir' $ myClass-> method_1 ($ x) -> method_2 ($ y) '. –

+1

Ben de geçmişte bu fark ve soru sormak için hiç düşünmemiştim. Teşekkürler, şimdi cevabım var. – RockyFord

cevap

37

gibi yöntemler zincirleme sağlar:

Bir nesnenin, bu gibi "zincirleme" olabilir ile bu yöntem çağırarak var
$foo->bar('something')->baz()->myproperty 
4

.

$obj -> setFoo ('foo') -> setBar ('bar') -> setBaz ('baz') -> setFarble ('farble'); 
+0

Bu yorumun 2012'de yapıldığı ve ana amacının zincir yöntemlerinin kullanımını göstermek olduğunu, ancak tüm bunları öğrenmek için acemi olduğunu biliyorum: LÜTFEN tüm bu alanları aralarına koymayın! :) – bazzaretta

+0

@bazzaretta Sen boşluk patronum değilsin! – GordonM