2012-06-17 7 views
16

Zend Framework untersuchen Ich habe festgestellt, dass jede Setter-Methode einer beliebigen Klasse (von denen ich untersucht habe) die Instanz der Klasse zurückgibt, in der sie sich befindet. Sie setzt nicht nur einen Wert, sondern setzt auch $ zurück. Zum Beispiel:

/* 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; 
} 

Und so weiter. Jeder öffentliche Setter gibt $ this zurück. Und nicht nur Setter, gibt es auch einige Aktionsmethoden, sie liefert auch das $:

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

Was für ist dies notwendig? Was bewirkt die Rückgabe von $? Hat es eine besondere Bedeutung?

+4

Die Rückgabe von '$ (this)' bedeutet, dass Sie Methoden verketten können, zB '$ myClass-> method_1 ($ x) -> method_2 ($ y)'. –

+1

Das habe ich auch in der Vergangenheit bemerkt und nie gedacht, die Frage zu stellen. Danke, ich habe jetzt die Antwort. – RockyFord

Antwort

37

Die return $this erlaubt die Verkettung von Methoden wie:

$foo->bar('something')->baz()->myproperty 
4

Es ist so, dass Methodenaufrufe auf ein Objekt „gekettet“, wie dies werden.

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

Ich weiß, dass dieser Kommentar im Jahr 2012 gemacht wurde und sein Hauptzweck ist es, die Verwendung von Kettenmethoden zu demonstrieren, aber für alle Anfänger, die gerade darüber lernen: BITTE nicht alle diese Zwischenräume dazwischen stellen! :) – bazzaretta

+0

@bazzaretta Du bist nicht der Boss von Whitespace! – GordonM